|
|
|
| Есть код:
$fp = fsockopen($url,80,$errno,$errstr,30);
if(!$fp)
{
fclose($fp);
return 0;
}
else
{
fclose($fp);
return 1;
}
|
Но если коннект продолжается больше 30 секунд, то скрипт вообще перестает выполняться, т.е. последующие сайты не обрабатывает. Если по таймауту проходит, тогда все в порядке... Буду признателен, если подскажете решение проблемы! | |
|
|
|
|
|
|
|
для: Dimon-RU
(14.06.2009 в 10:58)
| | Возможно set_time_limit
И
fsockopen($url,80,$errno,$errstr,1);
|
| |
|
|
|
|
|
|
|
для: Zend72
(14.06.2009 в 11:35)
| | Но тогда скрипт будет просто заканчивать свою работу, а нужно чтобы продолжал тестировать сайты... | |
|
|
|
|
|
|
|
для: Dimon-RU
(14.06.2009 в 11:52)
| | С set_time_limit(0)? Он будет выполняться вечно... Ну не вечно... Взависимости от количества сайтов которые вы хотите протестировать. | |
|
|
|
|
|
|
|
для: Zend72
(14.06.2009 в 13:01)
| | Дело-то не в количестве времени, мне все равно сколько он будет проверять все сайты! Мне важно, чтобы он больше чем 30 секунд не пытался коннектится к каждому сайту и переходил дальше в случае чего!
А set_time_limit(0) у меня уже давно прописан. | |
|
|
|
|
|
|
|
для: Dimon-RU
(14.06.2009 в 10:58)
| | Проблема в незнании протокола, которым пользуетесь. Отсюда и зависания. | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2009 в 09:52)
| | Два дня курил документацию конкретно по данному протоколу, и в частности функциям. Результат пока нулевой... | |
|
|
|
|
|
|
|
для: Dimon-RU
(15.06.2009 в 15:06)
| | а функции тут не при чем. Я не о том, как сокетами соединения открывать. Я именно о взаимодействии клиента с сервером.
И за три дня RFC-2616 не выучишь.
Именно поэтому я и советую применять cURL. Там это всё уже выполнено за вас. | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2009 в 15:13)
| | Спасибо за подсказку с cURL.
curl_setopt($ch, CURLOPT_TIMEOUT,30);
| и эта проблема решена...
Но теперь другая возникла - скрипт зависает полностью, отбомбив 10 сайтов. При этом он мог проверить гораздо больше. Но как только 10 рабочих - сразу вечное зависание... | |
|
|
|
|
|
|
|
для: Dimon-RU
(14.06.2009 в 10:58)
| | Вроде по теме.. что бы лишнее не плодить..
В каком случае может не работать socket_set_timeout($fp, 5);
А то недавно столкнулся, разбираться не стал, переделал на cURL.
Т.е скрипт просто не обращал внимания на эту строчку, как будто её и нет. | |
|
|
|