[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Существует ли функция "ожидания"?
Rastyapa
Приветствую! Дело в том, что не доводилось работать со всякого рода сессиями, временем и вообще всем, что не связано с базами данных и файлами. Сегодня же появилась жесткая необходимость использовать ожидание в скрипте. К сожалению, функций для его реализации я не знаю, а интернет ничем не помог. Может кто-нибудь здесь поможет? Для примера: имеется следующий код и в определенный момент нужно устроить небольшую остановку, после чего продолжить работу скрипта.


$i=1;
while ($i!=100) {
$i++;
if $i==20 {
Здесь должно быть ожидание в течение 3-10 секунд
};
}


Если кто-то способен помочь - заранее большое спасибо.



Спустя 1 час, 1 минута, 17 секунд (4.08.2012 - 21:20) inpost написал(а):
Rastyapa
Ввёл в гугле: "php ожидание", первая ссылка на нужную функцию тебе и СРАЗУ на мануал php.net smile.gif И как ты искал...

Спустя 1 час, 25 минут, 49 секунд (4.08.2012 - 22:46) Nikitian написал(а):
Сильно подозреваю, что есть проблемы в архитектуре приложения. В 99% случаев скрипт не должен ребовать такого ожидания.

sleep() или usleep()

Спустя 4 часа, 26 минут, 7 секунд (5.08.2012 - 03:12) twin написал(а):
Поддерживаю Nikitian пятью конечностями. Слип оправдан обычно только тогда, когда хостер требует ограничений в работе скрипта. К примеру не больше 10 отправок майлов в секунду. Ну и пр. Нужно искать причину конфузии не там. Не стесняйся, обрисуй проблему подробнее. Тут не кусаются и даже помогают решить задачу кардинально.

Спустя 1 день, 9 часов, 28 минут, 15 секунд (6.08.2012 - 12:40) I++ написал(а):
Чего очень не хватает в PHP так это поллинга sad.gif Приходится костыли ваять в виду usleep с периодическим опросом каждый N мкс., а при долгом ожидании увеличивать до N ms. Но все равно WCPU не красивый становится.

Спустя 4 часа, 11 минут, 50 секунд (6.08.2012 - 16:52) FatCat написал(а):
Цитата (I++ @ 6.08.2012 - 14:40)
Чего очень не хватает в PHP так это поллинга

Чего не хватает, так это фоновых процессов. Вот пример:
$tasks = array(
'site.ru/index.html',
'site.ru/page1.html',
'site.ru/page2.html',
);

for($i=0;$i<count($tasks);$i++)
{
$tasks[ $tasks[$i] ] = file_get_contents( "http://".$tasks[$i] );
unset($tasks[$i]);
}

Время работы скрипта составит ожидания всех ответов.
Например, у меня есть генератор сайтмепы; сайт на пару тысяч страниц он будет молотить несколько часов.

Спустя 1 час, 2 минуты, 39 секунд (6.08.2012 - 17:54) inpost написал(а):
А ещё лучше отправлять соккетами запрос и не получая ответ обрывать соединение.

Спустя 9 минут, 11 секунд (6.08.2012 - 18:04) I++ написал(а):
FatCat, согласен, в PHP не хватает тредов, а меж-процесное взаимодействие просто убожество в стандартном IPC, php скрипт на shmop + pcntl во много раз быстрее. На передачи файла на 8 гиг, с кэшем получал по 2.5 гига в сек, кстати гдет постил эту тему тут.

Спустя 2 часа, 42 минуты, 52 секунды (6.08.2012 - 20:46) sharki написал(а):
FatCat
А на нод.жс наоборот жалуются типа не хватает синхронности, даже библиотеки пишут, которые это обеспечивает, щас в своем фреймворке использую такую, забавно...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.