Кроме того - что в консоли то, один раз выводится console.log('submit') или 2 в первый раз?
#!/usr/bin/php -q
<?php
if (is_file(__DIR__ . '/demon.pid')) {
echo 'Recall daemon already active'.PHP_EOL;
exit;
}
$pid = pcntl_fork();
if ($pid == -1) {
// Ошибка
die('could not fork'.PHP_EOL);
} else if ($pid) {
// Родительский процесс, убиваем
file_put_contents(__DIR__ . '/demon.pid', $pid);
die('die parent process'.PHP_EOL);
} else {
// Отцепляемся от терминала
posix_setsid();
// Новый процесс, запускаем главный цикл
while(1) {
// Тут основной код
}
sleep(1);
}
}
<?php
// Проверяет что демон запущен, если нет - запускает
$file = 'path/to/demon.pid';
if (is_file($file)) {
$pid = file_get_contents($file);
if (posix_kill($pid, 0)) {
echo "Демон работает ".date('Y-m-d H:i:s').PHP_EOL;
exit;
} else {
echo "Удаляю файл с мертвым демоном ".date('Y-m-d H:i:s').PHP_EOL;
unlink($file);
exec('php path/to/demon');
exit;
}
} else {
// Запускаю демона
echo "Запускаю демона ".date('Y-m-d H:i:s').PHP_EOL;
exec('php path/to/demon');
exit;
}