运行 php 脚本作为守护进程

2022-08-30 06:38:12

我需要运行一个php脚本作为守护进程(等待指令并做一些事情)。cron工作不会为我做这件事,因为一旦指令到达,就需要采取行动。由于内存管理问题,我知道PHP并不是守护进程的最佳选择,但是由于各种原因,在这种情况下我必须使用PHP。我遇到了libslack的一个名为Daemon(http://libslack.org/daemon)的工具,它似乎可以帮助我管理守护进程,但是在过去的5年中没有任何更新,所以我想知道你是否知道其他一些适合我的情况的替代方案。任何信息将不胜感激。


答案 1

你可以从命令行(即 bash)启动你的 php 脚本,方法是使用

nohup php myscript.php &

将您的流程置于后台。&

编辑:
是的,有一些缺点,但无法控制?这是错误的。
一个简单的会阻止它。它仍然是最好和最简单的解决方案。kill processid


答案 2

另一种选择是使用Upstart。它最初是为Ubuntu开发的(默认情况下与它一起打包),但旨在适用于所有Linux发行版。

此方法类似于 Supervisord守护程序,因为它在系统引导时自动启动守护程序,并在脚本完成时重生。

如何设置:

在 上创建新的脚本文件。下面是一个示例:/etc/init/myphpworker.conf

# Info
description "My PHP Worker"
author      "Jonathan"

# Events
start on startup
stop on shutdown

# Automatically respawn
respawn
respawn limit 20 5

# Run the script!
# Note, in this example, if your PHP script returns
# the string "ERROR", the daemon will stop itself.
script
    [ $(exec /usr/bin/php -f /path/to/your/script.php) = 'ERROR' ] && ( stop; exit 1; )
end script

启动和停止守护程序:

sudo service myphpworker start
sudo service myphpworker stop

检查您的守护程序是否正在运行:

sudo service myphpworker status

谢谢

非常感谢Kevin van Zonneveld,我从中学到了这种技术。


推荐