запустить сценарий с помощью сценария оболочки, который запускает бесконечный цикл и ждет процесс закончен. Поскольку у вас также есть бесконечный цикл в вашем скрипте PHP, это будет только в том случае, если ваш скрипт остановлен.
Далее вы пишете PID скрипта в текстовый файл. Вы должны получить ПИД с этим: http://php.net/manual/en/function.getmypid.php
Следующим шагом является создание кроны, которая запускается каждый час. Этот cronjob считывает файл PID .txt, удаляет его и убивает процесс.
Поскольку сценарий оболочки, упомянутый в начале, также имеет бесконечный lopp, он перезапустит процесс php напрямую.
Примеры скриптов:
Автор сценария:
#!/bin/bash
while true
do
php myscript.php > /dev/null
done
сохранить его, например, как start.sh и установить chmod + x для его выполнения.
Теперь вы можете запустить его с: nohub ./start.sh &
в.PHP вы делаете что-то вроде этого в начале:
file_put_contents("/tmp/yourscript.pid", getmypid());
И ЭРВО сценария хрон как Баш:
#!/bin/bash
PID=`cat /tmp/yourscript.pid`
rm /tmp/yourscript.pid
kill -9 $PID
вы также можете в хрон сценарий с PHP:
<?php
$pid=file_get_contents("/tmp/yourscript.pid");
unlink("/tmp/yourscript.pid");
shell_exec("kill -9 $pid");
Cron/Crontab - это то, что вы ищете, google it. – Sugar
С помощью cron вам может даже не понадобиться nohup ... – Romain
Сценарий имеет функции, которые работают неопределенно. Поэтому, когда он начинается, он должен оставаться открытым. Поэтому перед повторным запуском скрипта он должен быть убит. – user1002601