如何检查php脚本是否仍在运行
时间:2020-03-06 14:33:42 来源:igfitidea点击:
我有一个监听队列的PHP脚本。从理论上讲,它永远不会消失。是否需要检查其是否仍在运行?像PHP的" Ruby's God(http://god.rubyforge.org/)"之类的东西?
上帝与语言无关,但是拥有在Windows上也可以使用的解决方案会很好。
解决方案
简单的bash脚本
#!/bin/bash while [true]; do if ! pidof -x script.php; then php script.php & fi done
一种可能的解决方案是让它使用套接字函数在端口上侦听。我们可以使用简单的脚本检查套接字是否仍在侦听。甚至像pingdom这样的监视服务都可以监视其状态。如果死亡,则套接字不再监听。
大量的解决方案..祝你好运。
不是用于Windows,而是...
我有几个长时间运行的PHP脚本,其中包含一个外壳脚本。我们可以选择从脚本中返回一个值,该值将在shell脚本中进行检查以退出,立即重新启动或者休眠几秒钟-然后重新启动。
这是一个简单的示例,它将一直运行PHP脚本,直到将其手动停止为止。
#!/bin/bash clear date php -f cli-SCRIPT.php echo "wait a little while ..."; sleep 10 execphp daemon.php 2>&1 | mail -s "Daemon stopped" [email protected]
" exec $ 0"将重新启动脚本,而无需创建子进程,该子进程以后将不得不解散(同时占用资源)。这个bash脚本包装了一个邮件发件人,因此如果退出并暂停一会儿就没问题了。
只需在脚本后添加第二个命令即可。当/如果停止,则调用第二个命令。例如。:
Just append a second command after the script. When/if it stops, the second command is invoked. Eg.: php daemon.php | mail -s "Daemon stopped" [email protected]
编辑:
从技术上讲,这会立即调用邮件程序,但仅在php脚本结束时才完成命令。这样做将捕获php-script的输出并将其包含在邮件正文中,这对于调试导致脚本停止的原因很有用。
如果我们熟悉脚本,则可以要求他每隔X次在db中设置一个时间值,然后让cron作业检查该值是否最新。
troelskn写道:
php daemon.php & mail -s "Daemon stopped" [email protected]
每次在daemon.php中打印一行时,都会调用mail
(应该永远不会,但是仍然应该)。
而是使用双&运算符分隔命令,即
##代码##