Я выполняю запрос на завивки страницы. Я установил оба значения «CURLOPT_TIMEOUT» (до 6 секунд) и «CURLOPT_CONNECTTIMEOUT» (до 4 секунд), и оба они отлично работают для большинства URL-адресов.Как изменить тайм-аут curl php, когда curl пытается разрешить хост (curl err_no 6)
Однако, если веб-страница не отвечает (и, наконец, вызывает CURL через ошибку «Не удалось разрешить хост» (err_no 6)) - кажется, что «CURLOPT_TIMEOUT» не имеет эффекта, и завиток будет ждать, возможно, неопределенно или пока не истечет какой-то «другой» тайм-аут.
С URL я пытаюсь получить доступ, CURL всегда, кажется, принимает почти ровно 15 секунд, прежде чем он возвращается (который не имеет ничего общего с «CURLOPT_TIMEOUT» или «CURLOPT_CONNECTTIMEOUT».
Может кто-нибудь сказать мне, как я могу ограничить количество времени CURL затрачивает пытается решить множество
Fantastic! Я посмотрю, как это можно сделать, попробуйте, спасибо! –
Это не будет особенно легко, поскольку DNS - это синхронное дело, как правило, которое блокирует процесс. Существует «adns» (http://www.chiark.greenend.org.uk/~ian/adns/) - который обеспечивает асинхронный поиск, он старый, но функциональный. Вероятно, достаточно легко вызвать dig или nslookup извне и убить процесс, если он занимает слишком много времени, но это приводит к накладным расходам. Если вы можете использовать pcntl_fork(), вы можете запустить новый поток, чтобы сделать это, или использовать pcntl_alarm(), чтобы выйти из блокировки раньше. – Orbling