-=SG=-
Guest
оцените демон на php плиз
Доброе утро уважаемые, вот возникла необходимость написать демон на пхп (а то падения крона на серваке задолбали)
Опыта написания демонов нет, поэтому инфу собирал по крупицам, прошу знатоков заценить результат и подправить/оптимизировать если можно указать на возможные косяки в работе.
Сразу оговорка, к system() доступа нет, поэтому пришлось идти другим путем. Скрипт проверил на 2 вебсерваках, вроде работает как надо, но хотелось бы узнать следующие моменты:
а какже макс. время исполнения скрипта ..прокатиит ли здесь set_time_limit(0); или это ограничение вообще работает тока когда скрипт запускается от имени клиента (браузера) ..а крон (от имени сервера) будет спокойно исполнять его вечно (до перезагруза сервер) это нормально?
вот собственно код (помидорами просьба не бросать)
Доброе утро уважаемые, вот возникла необходимость написать демон на пхп (а то падения крона на серваке задолбали)
Опыта написания демонов нет, поэтому инфу собирал по крупицам, прошу знатоков заценить результат и подправить/оптимизировать если можно указать на возможные косяки в работе.
Сразу оговорка, к system() доступа нет, поэтому пришлось идти другим путем. Скрипт проверил на 2 вебсерваках, вроде работает как надо, но хотелось бы узнать следующие моменты:
а какже макс. время исполнения скрипта ..прокатиит ли здесь set_time_limit(0); или это ограничение вообще работает тока когда скрипт запускается от имени клиента (браузера) ..а крон (от имени сервера) будет спокойно исполнять его вечно (до перезагруза сервер) это нормально?
вот собственно код (помидорами просьба не бросать)
PHP:
// снимим ограничение на длительность исполнения скрипта.
if (ini_get('safe_mode'))
ini_set ('max_execution_time', "0");
else
set_time_limit(0);
ob_implicit_flush(1);
ignore_user_abort(1);
//функция выполняемая при выходе
function vihod()
{
$fp = fopen("data/demon.txt", "w");
fputs($fp,'0');
fclose($fp);
}
//проверка запущен ли уже скрипт
$fp = fopen("data/demon.txt", "r");
$rezult=fread($fp,4096);
fclose($fp);
if ($rezult==1)
exit ('скрипт уже запущен');
else
{
//устанавливаем флаг запуска
$fp = fopen("data/demon.txt", "w");
fputs($fp, '1');
fclose($fp);
//вечный цикл
for ($i=2; $i>0; $i++)
{
//текст основного скрипта
//конец скрипта и задержка
sleep(30);
}
register_shutdown_function (vihod());
}