我偶尔使用 forever.js 将CLI类型的Node.js应用程序快速而简单地部署到生产环境中,而无需完整的supervisord部署。
我想知道是否有PHP的等效工具?目前我们有一个队列处理系统,从SQS获取消息,并将它们同步处理到数据库中(在这种特定用例中,无法异步执行,因为会导致各种令人讨厌的行锁定问题)。目前它每分钟运行一次,但经常提前完成,我希望它能重新开始运行。我不能同时运行多个进程。
欢迎任何*nix命令/软件/bash类型的想法。
我偶尔使用 forever.js 将CLI类型的Node.js应用程序快速而简单地部署到生产环境中,而无需完整的supervisord部署。
我想知道是否有PHP的等效工具?目前我们有一个队列处理系统,从SQS获取消息,并将它们同步处理到数据库中(在这种特定用例中,无法异步执行,因为会导致各种令人讨厌的行锁定问题)。目前它每分钟运行一次,但经常提前完成,我希望它能重新开始运行。我不能同时运行多个进程。
欢迎任何*nix命令/软件/bash类型的想法。
只需在您的 PHP 脚本中使用 forever
(使用-c
参数指示 forever 使用php
):
$ cat test.php
<?php
sleep(3);
print("foobar\n");
exit;
?>
$ forever -c php test.php
foobar
error: Forever detected script was killed by signal: null
error: Forever restarting script for 1 time
foobar
error: Forever detected script was killed by signal: null
error: Forever restarting script for 2 time
...
forever -c
并没有将脚本放在后台运行,我必须使用 screen 来实现,类似于 screen forever -c php myscript.php
并分离它以运行 "forever"! - Ma'moon Al-Akashforever start -c php mysqcript.php
。确保为 forever 实例和脚本的 STDOUT / STDERR 指定日志文件,例如:forever start -a -l /path/to/myscript_forever.log -o /path/to/myscript_out.log -e /path/to/myscript_err.log -c php myscript.php
。 - Sergey Lukin我刚刚发现了这个工具supervisord,它非常好用。我使用了这个ratchet教程让它在几分钟内运行起来!
如果我没记错,forever脚本在重新启动服务器时不会自动重启吧?
foreverd
一起使用。然而,由于几乎所有的东西都正在转移到docker上,我们发现自己实际上正在使用docker内置的守护进程工具,例如:-d --restart=always
。 - Jujhar Singh