@burov0798
Пытаюсь изучать php\js

Как проверить, работает ли php скрипт?

Запускаю скрипт в screen в цикле while(-1). Но он может завершится с надписью "killed" (Ограничение vds)
Мне нужно, чтобы другой скрипт всегда его проверял, работает ли он, если работает - ничего не делаем, а иначе - запускать его снова в этом же скрине.
1. Пробовал:
$fh = fopen(__FILE__, 'r');
        if (!flock($fh, LOCK_EX | LOCK_NB)) {
            die('Script is already running!');
        }

запустил скрипт в скрине, вышел из него, попробовал еще раз запустить - вышло "'Script is already running!". Вроде бы кидай его на cron и все норм, но... Зашел снова в скрин, завершил работу скрипта (Ctrl + z) - запускаю снова и эта же надпись: "Script is already running!". В чем трабл?
2. Пробовал сохранять pid процесса, и проверять работает ли он:
if (posix_kill($pid, 0))
{
	echo "Процесс  запущен.";
}

В итоге хоть скрипт запущен или нет, все равно пишет, что "процесс запущен".
  • Вопрос задан
  • 2945 просмотров
Пригласить эксперта
Ответы на вопрос 4
lxfr
@lxfr
Попробуйте создавать .lock файл при старте и удалять при завершении и проверять его наличие другим скриптом. Если файл есть значит скрипт либо запущен либо завершен аварийно.
Ответ написан
DmitryIvaneychik
@DmitryIvaneychik
Developer in VoxImplant
Можно повесить его на monit
Ответ написан
Комментировать
R0dger
@R0dger
Laravel/Yii/2 AngularJs PHP RESTful API
Ответ написан
Комментировать
Есть такая штука как supervisor(ctl).И скрин не надо будет,и костыль поднятия встроен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы