@ChaseVase

Как ограничить время запроса curl?

Есть курл запрос (mcurl), как сделать так что бы по завершению пяти секунд была проверка - если страница загрузилась -> отобразить страницу, если не загрузилась -> выводить текст? Пробовал [CURLOPT_LOW_SPEED_LIMIT => 1], [CURLOPT_LOW_SPEED_TIME => 5], CURLOPT_TIMEOUT, не помогало (ну или не правильно работал с ними)
function command($command) { // чек в магазине ключей defkeys
    global $name;
    $name = str_replace('+', ' ', $name); // заменяем пробелы на плюс
    $adress = $command;
    global $client;
    $file = $client->get($adress, [CURLOPT_LOW_SPEED_LIMIT => 1], [CURLOPT_LOW_SPEED_TIME => 5]);
    $item_shops = phpQuery::newDocument($file);
    foreach ($item_shops->find('.table tbody .good:contains("' . $name . '")')->eq(0) as $item) {
        $item = pq($item);
        $items_shop3 = $item->find('.rub')->html();
        $items_shop3 = preg_replace('/( руб.*)$/', '', $items_shop3);
        return $items_shop3;
    }
}
  • Вопрос задан
  • 1341 просмотр
Решения вопроса 1
https://github.com/KhristenkoYura/mcurl - примеры использования библиотеки
https://curl.haxx.se/libcurl/c/CURLOPT_TIMEOUT.html - допустимое время для получения запроса в секундах

Данной библиотекой не пользовался, но алгоритм такой: устанавливаете опции клиенту, делаете запрос и возвращается объект Result, по которому можно понять, как выполнился запрос.
$client->setOptions([CURLOPT_TIMEOUT => 5]);
$result = $client->get('http://example.com');

echo $result->hasError() ? 'ERROR' : $result->getBody();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы