以守护进程方式运行php脚本

26 浏览
0 Comments

以守护进程方式运行php脚本

我需要将一个 PHP 脚本作为守护进程运行(等待指令并执行操作)。cron job 不能够满足我的需求,因为指令需要在到达时立即执行。我知道 PHP 并不是守护进程的最佳选择,因为它存在着内存管理问题,但由于各种原因,我必须在这种情况下使用 PHP。我发现了一个由 libslack 开发的工具,叫做 Daemon(http://libslack.org/daemon),它似乎可以帮助我管理守护进程,但它在过去的 5 年中没有更新,所以我想知道是否有其他适合我情况的替代品。非常感谢任何信息。

admin 更改状态以发布 2023年5月22日
0
0 Comments

另一个选项是使用Upstart。它最初为Ubuntu开发的(并默认打包在其中),但旨在适用于所有Linux发行版。

这种方法类似于Supervisorddaemontools,因为它会在系统启动时自动启动守护程序并在脚本完成后重新启动。

设置方法:

/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,我是从他那里学到这种技术的。

0
0 Comments

你可以通过命令行(即 bash)启动你的 PHP 脚本,方法是使用以下命令:

nohup php myscript.php &

& 命令可以将你的进程放到后台运行。

编辑:
是的,这么做存在一些缺点,但没法控制?这是错误的。
简单的 kill processid 命令可以停止它。而且这仍然是最好和最简单的解决方法。

0