将 php 脚本作为守护进程运行

新手上路,请多包涵

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

原文由 Beier 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 421
2 个回答

您可以通过使用从命令行(即 bash)启动 php 脚本

nohup php myscript.php &

& 将您的进程置于后台。

编辑:

是的,有一些缺点,但无法控制?那是错误的。

一个简单的 kill processid 将停止它。它仍然是最好和最简单的解决方案。

原文由 Henrik P. Hessel 发布,翻译遵循 CC BY-SA 2.5 许可协议

另一种选择是使用 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 ,我从那里学到了这项技术。

原文由 Jonathan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题