| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Сеть > [cURL] ошибка таймаута |
| Автор: alligator 16.1.2007, 17:23 | ||
| Проблемка со скриптом использующим curl_multi_* отваливаеться с ошибкой Connection time-out after 17533 ms Опция прописана....
|
| Автор: Mal Hack 16.1.2007, 17:27 |
| Параметр таймаута задается в секундах. |
| Автор: alligator 16.1.2007, 18:02 |
| Ну дык и указано в секундах |
| Автор: Mal Hack 16.1.2007, 18:11 |
| Ты указал 3000 секунд - это чуть меньше часа. Скрипт разорвал соединение через 17 секунд. |
| Автор: alligator 17.1.2007, 22:02 |
| Так это проблемку вроде решил , но теперь отваливаеться с ошибкой Empty reply from server Решение пока не нашел |
| Автор: BoneHound 31.7.2008, 11:07 | ||
| Второй день бьюсь, никак победить не могу... помогите, кто чем может Значит, общая задача: сделать прокси-чекер. Споткнулся почти сразу же. Вот что удалось наваять: (php5):
p.s. $dest_host в данном случае тот же, на котором размещен скрипт. Скрипт очень хорошо работает, если все прокси рабочие Проверка занимает около 20 секунд. Трабл в следующем, как только один падает - время выполнения затягивается на 60-100 секунд. Причем зависание происходит на второй итерации цикла "implementing multi curl task", в строке "curl_multi_exec($curl_master, $running);". Как я понимаю, он наталкивается на нерабочий прокси, долбится к нему битых полторы минуты, и потом продолжает цикл. И тут - ох ты! оказывается тайм-аут то наступил еще Бог весть когда... так что (ха-ха) курл со спокойной совестью сообщает мне об этом занимательном факте. Мол, я тут полчаса пытался отправить запрос, но таймаут-то 30 секунд, так что - извини - ошибочка! Внимание - вопрос! Как заставить его прекращать попытки соединения сразу же после наступления таймаута? Создается впечатление, что я либо не нашел соответствующей опции/функции курла, либо он тупит по малу (многопотоковые функции курла вроде как еще экспериментальные и недокументированные)... Есть бредовая идея реализовать локальный парраллелизм через proc_open() и stream_select(), а в каждом потоке обычным образом брать тестовую страничку средствами cURL... но это ведь полный копец маразм. P.S. запускать параллельно несколько скриптов не хочется - некрасиво ресурсы транжирить (как я понял, каждый такой поток будет жрать минимум 15мб памяти). В-общем, варианты есть, но может кто подскажет - может можно без ковыряний в ухе пальцем ноги обойтись? Т.е. заставить работать как положено curl_multi... |