лучшее значение для тайм-аута curl и тайм-аута соединения - PullRequest
2 голосов
/ 12 января 2011

Приветствую всех

Я работаю на небольшом сканирующем движке и использую curl для запроса страниц с различных веб-сайтов.Вопрос: что мне предложить установить значения connection_timeout и timeout?Вещи, которые я обычно сканировал бы, были бы страницами с большим количеством изображений и текста.

Ответы [ 5 ]

9 голосов
/ 12 января 2011

cURL знает два разных тайм-аута.
Для CURLOPT_CONNECTTIMEOUT не важно, сколько текста содержит сайт или сколько других ресурсов, таких как изображения, на которые он ссылается, потому что это тайм-аут соединения, и даже сервер не может знать о размере запрашиваемой страницы, пока соединение не будет установлено. 1003 * Для CURLOPT_TIMEOUT это имеет значение. Даже большие страницы требуют всего несколько пакетов в сети, но серверу может потребоваться больше времени для сборки вывода. Также количество переадресаций и других вещей (например, прокси) может значительно увеличить время отклика.

Вообще говоря, «наилучшее значение» для тайм-аутов зависит от ваших требований и условий сетей и серверов. Эти условия могут быть изменены. Поэтому нет «одного лучшего значения».
Я рекомендую использовать довольно короткие таймауты и повторить неудачную загрузку позже.

Кстати, cURL не загружает автоматически ресурсы, указанные в ответе. Вы должны сделать это вручную с дальнейшими вызовами на curl_exec (с новыми таймаутами).

0 голосов
/ 10 мая 2014

Если вы установите его слишком высоко, то ваш скрипт будет медленным, так как один URL, который не работает, займет все время, которое вы установили в CURLOPT_TIMEOUT, для завершения обработки. Если вы не используете прокси, вы можете просто установить следующие значения

CURLOPT_TIMEOUT = 3 CURLOPT_CONNECTTIMEOUT = 1

Затем вы можете просмотреть ошибочные URL-адреса позже, чтобы дважды проверить их.

0 голосов
/ 06 февраля 2013

Да.Если вашей целью является прокси-сервер для запроса другого сайта, для такого каскадного соединения потребуется довольно длительный период, например эти значения, для выполнения вызовов curl.

Особенно, если вы столкнулись с периодически возникающими проблемами с curl, сначала проверьте эти значения.

0 голосов
/ 07 сентября 2011

Лучший ответ - у rik.

У меня есть Proxy Checker, и в моих тестах я увидел, что большинству рабочих прокси-серверов требуется менее 10 секунд для подключения.

Поэтому я использую10 секунд для ConnectionTimeOut и TimeOut, но в моем случае вам нужно решить, сколько времени вы хотите использовать, поэтому начните с больших значений, используйте curl_getinfo, чтобы увидеть временные критерии и уменьшить значение.

Примечание: проксиподключение, которое занимает более 5 или 10 секунд, бесполезно для меня, поэтому я использую эти значения.

0 голосов
/ 25 февраля 2011

Я использую

     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch, CURLOPT_TIMEOUT,60);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...