我正在尝试在Php / Apache / Ubuntu(AWS)上运行较长的过程
这是一个简单的过程,可在夜间建立缓存。
该过程可以运行几个小时,可以通过crontab
通过curl
访问特殊的URL来启动。
有时,该过程随机终止且没有错误,我怀疑它已被apache
杀死,尽管我设置了
@set_time_limit(0);
@ini_set('max_execution_time', -1);
Php / Apache / Ubuntu是否是已知问题?
有办法解决吗?
当前,我的解决方案是每5分钟运行一次该过程,并将状态存储在磁盘上,然后从停止的地方继续。
但是我想了解更多有关此问题的信息,以及是否有更好的解决方法?
注意: 进程随机停止或根本不停止-进程越长(即更大的缓存),它停止的机会就越高
答案 0 :(得分:0)
一个可能的原因是客户端断开连接(例如在超时后):默认情况下,PHP在这种情况下会停止请求处理。为防止这种情况,您可以使用ignore_user_abort:
ignore_user_abort(true);
还要注意,set_time_limit
调用实际上可能会失败(例如在受限环境中),因此删除错误抑制(@
)或显式检查set_time_limit(0)
是否有意义返回true
。