Леонид М.
99 сообщений
#16 лет назад
Приветствую всех!
Столкнулся с такой проблемой:
Иногда зависает прогресс скрипта приведенного ниже, пробывал на разных серверах, но всеравно иногда прогресс останавливается пока не откроешь страничку заново.
С чем это может быть связано и какое решение этой проблемы ?


Упростил код для наглядного примера:

set_time_limit(0);
ob_implicit_flush();

for($i=0; $i<500; $i++){
$host = "ya.ru"; // Хосты разные каждый раз
$fp=fsockopen($host, 80, $errno, $errstr, 7);

if($fp){
echo 'ok';
}else{
echo 'no';
}

}
Алексей Ц.
292 сообщения
#16 лет назад
Sleep юзайте. Иначе php сжирает все ресурсы.
Леонид М.
99 сообщений
#16 лет назад
Sleep(1); - Ничего не меняет, только время больше занимает.

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

Вообщем рассмотрюи другие варианты, предлагайте
Виктор Ф.
21 сообщение
#16 лет назад
echo str_repeat("ok", 500);

Виктор Ф.
21 сообщение
#16 лет назад
А если серьёзно: перезагрузка страницы ничего не даёт, ищите проблему глубже (не в PHP). (так мне кажется :Р)
Леонид М.
99 сообщений
#16 лет назад
Цитата ("Vitas"):
А если серьёзно: перезагрузка страницы ничего не даёт, ищите проблему глубже (не в PHP). (так мне кажется :Р)


Понимаю, но хостер тоже ничем помочь не может (хоть и выделенный сервер). Наверника какието должны быть способы в php для более стабильной работы

ЗЫ Предпологаю что сокет зависает, но не факт.
Вадим Т.
3240 сообщений
#16 лет назад
moiseev, а закрывать сокеты не пробовали? Да и таймаут Вы выставили маловатый... 7 секунд - это очень мало для таймаута.

В общем, пожалуйста смотрите примеры тут:
Николай М.
1895 сообщений
#16 лет назад
Тайм аут задается в миллисекундах, если даже взять очень качественную связь по оптике то задержка (Ping) будет около 5-7, а если уже брать сокеты то надо его делать намного больше, в чем и заключалась Ваша ошибка. Попробуйте сменить задержку на 30-100, должно помочь.
Вадим Т.
3240 сообщений
#16 лет назад
MMM_Corp, таймаут для функции задается именно в секундах, а не миллисекундах.
Но и таймаута 7 секунд может быть мало для скрипта, который открывает так много коннекшенов, а вот 30-60 секунд - в самый раз.
Николай М.
1895 сообщений
#16 лет назад
Цитата ("tvv"):
MMM_Corp, таймаут для функции задается именно в секундах, а не миллисекундах.
Но и таймаута 7 секунд может быть мало для скрипта, который открывает так много коннекшенов, а вот 30-60 секунд - в самый раз.

Сори, это я по памяти ошибся, всюда как у людей в милисекундах, а тут в секундах, в прочем это не удивляет)