在PHP / Apache / Ubuntu上运行长时间的进程

时间:2018-09-06 09:21:09

标签: php apache

我正在尝试在Php / Apache / Ubuntu(AWS)上运行较长的过程

这是一个简单的过程,可在夜间建立缓存。

该过程可以运行几个小时,可以通过crontab通过curl访问特殊的URL来启动。

有时,该过程随机终止且没有错误,我怀疑它已被apache杀死,尽管我设置了

    @set_time_limit(0);
    @ini_set('max_execution_time', -1);

Php / Apache / Ubuntu是否是已知问题?

有办法解决吗?

当前,我的解决方案是每5分钟运行一次该过程,并将状态存储在磁盘上,然后从停止的地方继续。

但是我想了解更多有关此问题的信息,以及是否有更好的解决方法?

注意: 进程随机停止或根本不停止-进程越长(即更大的缓存),它停止的机会就越高

1 个答案:

答案 0 :(得分:0)

一个可能的原因是客户端断开连接(例如在超时后):默认情况下,PHP在这种情况下会停止请求处理。为防止这种情况,您可以使用ignore_user_abort

ignore_user_abort(true);

还要注意,set_time_limit调用实际上可能会失败(例如在受限环境中),因此删除错误抑制(@)或显式检查set_time_limit(0)是否有意义返回true