PHP-nohup 的程序为什么会自己停止
我在后台用nohup运行了一些php的后台脚本,但有时会有一两个脚本自己停止,我还得手动再让他重启,我的命令是nohup php /data/app/www/www.abc.com/webroot/index.php queue >& /dev/null &
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
nohup 可以将程序推送到后台运行.
但他不能管程序的状态, 程序是否停止, 主要还是程序本身是否正常.
PHP程序运行要注意的地方是:
set_time_limit(0); 设置无超时时间
ini_set('memory_limit', '1024M'); 设置内存, CLI方式运行可能需要更多的内存, 这个要根据程序来决定, 避免程序因内存不够而退出
程序本身要确保无错误, 至少是不能中断程序运行的错误.
利用 nohup php test.php /error.log 2>&1 & 来记录程序错误, 排查程序中止的问题.
先检查是系统问题还是程序问题,若是程序问题你可以分析下nohup.out,你可以写个shell来检查是否还在运行,若停止则重新启动nohup php /data/app/www/www.abc.com/webroot/index.php queue >& /dev/null &,并将这个shell写入cron定期执行。
你可以把程序的输出导入到一个日志文件中,然后在下次脚本失败时,看一下这个日志分析下错误原因,看一下是系统原因还是程序原因。
如果系统运行状态良好,程序自动停止,一般是因为程序自身的原因,程序出错崩溃、操作数据库失败、读写文件或日志失败、占用内存原来越大引起崩溃等有有可能,我这边也有程序一直放着跑了大半年,然后突然奔溃掉的,预防的办法就是把重启命令写得crontab中,定期自动重启程序