Мое намерение таково.
My client.html вызывает php script check.php через ajax. Я хочу check.php, чтобы проверить, запущен ли еще script task.php. Если да, я ничего не делаю. Если это не так, мне нужно запустить его в фоновом режиме.
У меня есть идея, что я хочу сделать, но я не уверен, как это сделать.
Часть A. Я знаю, как вызвать check.php через ajax.
Часть B. В check.php мне может потребоваться запустить task.php. Мне кажется, мне нужно что-то вроде:
$PID = shell_exec("php task.php > /dev/null & echo $!");
Я думаю, что " > /dev/null &" бит говорит, что он работает в фоновом режиме, но я не уверен, что такое "$!" делает.
Часть C. $PID Мне нужно как тэг процесса. Мне нужно записать этот номер (или что-то еще) в файл в том же каталоге и прочитать его каждый раз на check.php. Я не могу понять, как это сделать. Может ли кто-нибудь дать мне ссылку о том, как читать/записывать файл с одним номером в тот же каталог?
Часть D. Затем, чтобы проверить, все ли запущен последний запущенный task.php, я буду использовать функцию:
function is_process_running($PID)
{
exec("ps $PID", $ProcessState);
return(count($ProcessState) >= 2);
}
Я думаю, что это все необходимые мне биты, но, как вы можете видеть, я не уверен, как сделать некоторые из них.