Консультация № 63886
23.11.2006, 16:57
0.00 руб.
0 1 1
Здравствуйте!
Я написал простейшую функцию - таймер.
timer_val(). Она принимает всего один аргумент - время в секундах. И на заданное время останавливает выполнение остальной части скрипта. Функция работает нормально и ошибок невыдает.
Меня беспокоит, что в ней все время выполняется цикл (в режиме ожидания). Несильно ли это загружает сервер?
Второй вопрос (отдельный): Забыл где устанавливается, и как, опция позволяющая скрипту продолжать работу даже если пользователь закрыл браузер.

Приложение:
<?phpfunction timer_val($timer) {$hit=time()+$timer;$hot=time();while($hot<$hit) $hot=time(); }?>

Обсуждение

Неизвестный
23.11.2006, 18:11
общий
это ответ
Здравствуйте, Valeraorg!
Изобретать велосипед, конечно же, не нужноФункии sleep и usleep. Первая приостанавливает выполнение скрипта на время в секундах, вторая в микросекундах. Примеры:
sleep(5); // приостановиться на 5 секунд
usleep(300000); //приостановиться на 0.3 секунды
Учтите, вторая функция (usleep) в Windows работает только с PHP версии 5.0.0 и выше.

> Несильно ли это загружает сервер?

Если на сервере не стоит разграничение ресурсов, то выполнение такого цикла попросто будет "съедать" всё процессорное время.

> Второй вопрос (отдельный): Забыл где устанавливается, и как, опция позволяющая скрипту продолжать работу даже если пользователь закрыл браузер.
Этим занимается функция
int ignore_user_abort ( [bool setting] );
Соответственно, если установить ignore_user_abort(true); то PHP продолжит работу, даже если клиент прервет соединение с сервером.
Форма ответа