Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Небольшая проблема с fsockopen
 
 автор: Dimon-RU   (14.06.2009 в 10:58)   письмо автору
 
 

Есть код:
    
$fp = fsockopen($url,80,$errno,$errstr,30);
if(!$fp)
{
fclose($fp);
return 0;
}
else
{
fclose($fp);
return 1;
}


Но если коннект продолжается больше 30 секунд, то скрипт вообще перестает выполняться, т.е. последующие сайты не обрабатывает. Если по таймауту проходит, тогда все в порядке... Буду признателен, если подскажете решение проблемы!

  Ответить  
 
 автор: Zend72   (14.06.2009 в 11:35)   письмо автору
 
   для: Dimon-RU   (14.06.2009 в 10:58)
 

Возможно set_time_limit
И
fsockopen($url,80,$errno,$errstr,1);

  Ответить  
 
 автор: Dimon-RU   (14.06.2009 в 11:52)   письмо автору
 
   для: Zend72   (14.06.2009 в 11:35)
 

Но тогда скрипт будет просто заканчивать свою работу, а нужно чтобы продолжал тестировать сайты...

  Ответить  
 
 автор: Zend72   (14.06.2009 в 13:01)   письмо автору
 
   для: Dimon-RU   (14.06.2009 в 11:52)
 

С set_time_limit(0)? Он будет выполняться вечно... Ну не вечно... Взависимости от количества сайтов которые вы хотите протестировать.

  Ответить  
 
 автор: Dimon-RU   (15.06.2009 в 15:05)   письмо автору
 
   для: Zend72   (14.06.2009 в 13:01)
 

Дело-то не в количестве времени, мне все равно сколько он будет проверять все сайты! Мне важно, чтобы он больше чем 30 секунд не пытался коннектится к каждому сайту и переходил дальше в случае чего!
А set_time_limit(0) у меня уже давно прописан.

  Ответить  
 
 автор: Trianon   (15.06.2009 в 09:52)   письмо автору
 
   для: Dimon-RU   (14.06.2009 в 10:58)
 

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

  Ответить  
 
 автор: Dimon-RU   (15.06.2009 в 15:06)   письмо автору
 
   для: Trianon   (15.06.2009 в 09:52)
 

Два дня курил документацию конкретно по данному протоколу, и в частности функциям. Результат пока нулевой...

  Ответить  
 
 автор: Trianon   (15.06.2009 в 15:13)   письмо автору
 
   для: Dimon-RU   (15.06.2009 в 15:06)
 

а функции тут не при чем. Я не о том, как сокетами соединения открывать. Я именно о взаимодействии клиента с сервером.
И за три дня RFC-2616 не выучишь.
Именно поэтому я и советую применять cURL. Там это всё уже выполнено за вас.

  Ответить  
 
 автор: Dimon-RU   (15.06.2009 в 23:37)   письмо автору
 
   для: Trianon   (15.06.2009 в 15:13)
 

Спасибо за подсказку с cURL.
curl_setopt($ch, CURLOPT_TIMEOUT,30);
и эта проблема решена...
Но теперь другая возникла - скрипт зависает полностью, отбомбив 10 сайтов. При этом он мог проверить гораздо больше. Но как только 10 рабочих - сразу вечное зависание...

  Ответить  
 
 автор: mikha   (15.06.2009 в 10:29)   письмо автору
 
   для: Dimon-RU   (14.06.2009 в 10:58)
 

Вроде по теме.. что бы лишнее не плодить..
В каком случае может не работать socket_set_timeout($fp, 5);
А то недавно столкнулся, разбираться не стал, переделал на cURL.
Т.е скрипт просто не обращал внимания на эту строчку, как будто её и нет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования