以守护进程方式运行php脚本
以守护进程方式运行php脚本
我需要将一个 PHP 脚本作为守护进程运行(等待指令并执行操作)。cron job 不能够满足我的需求,因为指令需要在到达时立即执行。我知道 PHP 并不是守护进程的最佳选择,因为它存在着内存管理问题,但由于各种原因,我必须在这种情况下使用 PHP。我发现了一个由 libslack 开发的工具,叫做 Daemon(http://libslack.org/daemon),它似乎可以帮助我管理守护进程,但它在过去的 5 年中没有更新,所以我想知道是否有其他适合我情况的替代品。非常感谢任何信息。
admin 更改状态以发布 2023年5月22日
另一个选项是使用Upstart。它最初为Ubuntu开发的(并默认打包在其中),但旨在适用于所有Linux发行版。
这种方法类似于Supervisord和daemontools,因为它会在系统启动时自动启动守护程序并在脚本完成后重新启动。
设置方法:
在/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,我是从他那里学到这种技术的。