"ID" скрипта в системе, контроль выполнения скрипта

GrayMaster

Новичок
"ID" скрипта в системе, контроль выполнения скрипта

Есть скрипт который должен работать более 10-и часов на сервере. Т.е. за скриптом нужно следить чтоб он не сдох по какой-либо причине, например рестарт сервера.
Можно ли в PHP при запуска скрипта получить ID скрипта с системе, а затем проверять другим скриптом, запускающимся кроном, на наличие этого ID ? Как только ID не будет найден, будет проврека - или скрипт окончил работу, или в случае обрыва выполнения - повторный запуск и продолжение работы...
Как такое реализовать ? или какие есть альтернативные методы ?
 

kvf77

Red Devil
GrayMaster

Заставь скрипт создавать файл-флаг, в который он будет писать скажем дату и время каждые там 10 минут. Проверяй другим скриптом этот файл, если разница между последним временм и текущим больше 10 минут - значит скрипт отвалился.

Если файла нет - значит скрипт закончил работу.

что за монстра пишешь если не секрет?

такие скрипты лучше по крону запускать
 

GrayMaster

Новичок
что за монстра пишешь если не секрет?
Ооо да :) Ещё какого :)

Ну он и так кроном, но раз в 2-3 дня запускается...
С файлом - хм... по моему плохой вариант, незнаю даже... Т.к. обновление файла может затянуться... Получется двойной запуск.
 

kvf77

Red Devil
GrayMaster

ты не отвиливай - а скажи че твой монстр делает - а то, сдается мне, делает он это через одно место. и нам проще будет сказать тебе как надо делать, вместо того, чтобы придумывать для тебя обходные маневры
 

GrayMaster

Новичок
Это робот читающий информацию с одной системы в зависимости от запросов. Т.е. вводные данные - много запросов. Подключаемся, читаем данные, в зависимости от запроса, затем читаем данные с другого сервера в зависимости от результата, затем всё полученое анализируем...

-~{}~ 19.10.05 19:47:

делает мой скрипт всё правильно, и делаю я всё правильно, давно уже пишу - опыт есть. вот столкнулся вот с такой проблемой, как следить за процессом :(
До этого делал через таймаут, т.е. как предлогал kvf77... Но думаю это не лучший вариант...
 

GrayMaster

Новичок
О да ещё как подойдёт ! Большое спасибо !
А в PHP нет встроеных методов анализа выполняемых процессов ? или придётся анализировать выдачу system("ps ux") ?
 

VinGood

Guest
В твоем случае можно еще залочить файл, то есть применить функцию flock, а в том скрипте пробовать в тот файлик что-нить писать, тебе вернется ошибка, если скрипт живой или нормально все запишется в файл, если он умер.

Типа вот так
Код:
$fh = fopen("test.ttt","w");
flock($fh,LOCK_EX);
while(true){}
соответственно во втором скрипте

Код:
$fh = fopen("test.ttt","w+");
$res = fputs($fh,"ttt");
если $res == 0 , то скриптик работает, если 3 , то упал.
 

whirlwind

TDD infected, paranoid
> А в PHP нет встроеных методов анализа выполняемых процессов ?

см. ф-ции pcntl_
 
Сверху