Перезапуск php-демона

  • Автор темы Tyler Durden
  • Дата начала

Tyler Durden

Guest
Перезапуск php-демона

Доброе время суток!

Ситуация такова: висит в памяти сервера демон, написанный на PHP. Можно ли при помощи другого PHP-скрипта периодически проверять (при помощи crontab, например), запущен ли процесс или упал... В случае, если демон упал (сервер перезагрузили, к примеру), перезапустить php-демон.

У запущенного php-скрипта есть свой pid в системе. Только можно ли как-то получить к нему доступ?

Тогда более общий вопрос: Можно ли средствами PHP проверить, висит ли в памяти процесс, зная pid процесса???

Заранее, спасибо!

П.С. PHP рулит!!! ;)
 

DeFacto

Новичок
Tyler Durden
www.php.net/system

а далее найти pid процесс, напр через strpos
 

sal

Новичок
Tyler Durden

У тебя обязательное условие использование PHP?
 

Tyler Durden

Guest
Автор оригинала: sal
Tyler Durden

У тебя обязательное условие использование PHP?
Необязательное. Важна сама цель - следить за состоянием процесса. Какими средствами - уже второй вопрос.
 

tristram

Guest
;) зачем искать проблемы лишние? делаешь в демоне
PHP:
$fp = fopen("running.daemon","w");
flock($fp,LOCK_EX);
а в программе проверялке
PHP:
if ($fp = fopen("running.demon","w"))
{
 exec("/path/to/daemon");
}
т.е. пока работает демон, файл будет заблокирован. а если проверяющий скрипт открыл этот файл следовательно демон не работает и его нужно запустить.

не понимаю зачем людям лишний гемор с posix'ом =)

-~{}~ 18.09.05 13:31:

P.S проверялку по крону запускай сколько угодно часто.
 

Tyler Durden

Guest
Не работает проверялка...
Свободно открывает файл и пишет, что демон не запущен... Хотя демон открыл и заблокировал файл... :(
 

SiMM

Новичок
> Не работает проверялка...
ИМХО, и не должна.
В демоне пишешь
PHP:
...
if (!flock($fp,LOCK_EX)) die(); // демон уже был запущен
...
В проверялке
PHP:
...
if (flock($fp,LOCK_EX)) { // лочка удалась - файл не был залочен
  flock($fp,LOCK_UN);
  fclose($fp);
  exec(...);
}
 

tristram

Guest
странно я сделал sleep(60); у себя на "демоне" и запахало. блокируется файли проверялка не может его открыть.
 

-=SG=-

Guest
Уважаемые, боюсь быть закиданным помидорами но все же спрошу .. можно ли (если нет доступа к sistem) использовать в качестве демона следующую конструкцию:

PHP:
<?
$fp = fopen("demon.txt", "w"); //пустой файл для контроля запуска демона					
if (flock($fp,LOCK_EX)) 
{
	for ($i=1; $i>0; $i++)
	{	

        //текст скрипта

	sleep(30);
	}
}
else
die();
fclose($fp);
?>
ну и соотв его же впихнуть в крон (т.е. дкмон и чекер в одном флаконе) ... если не прав поправьте плиз...
 
Сверху