我正在我的本地计算机(Windows)上运行Apache服务器(2.2),我正在使用它运行一些PHP脚本来处理一些繁琐的工作。其中一个脚本涉及大量移动,调整大小和下载/上载文件到另一台服务器。我非常希望脚本能够不断运行,这样我就不必每次超时都重新启动脚本。
set_time_limit(0);
ignore_user_abort(1);
两者都在我的脚本中设置,但在大约30分钟到一小时后脚本停止,我在浏览器中收到504网关超时消息。我在Apache或PHP中缺少什么来防止超时?或者我应该以不同的方式运行脚本吗?
答案 0 :(得分:8)
或者我应该以不同的方式运行脚本吗?
当然。您应该从命令行(CLI)
运行脚本答案 1 :(得分:6)
如果我应该实现这样的东西,我会给你2个不同的脚本:
工作流程应为:
Ajax民意调查:
<script>
var $myToken;
function ajaxPolling()
{
$.get('process_controller.php?action=getStatus&token='+$myToken, function(data) {
$('.result').html(data);
});
}
setInterval("ajaxPolling()",60*1000); //Every minute
</script>
关于两个进程之间的通信有一些考虑因素,具体取决于您可以并行运行脚本B的实例数
session_start(); $token = session_id();
答案 2 :(得分:1)
使用php的system()
来调用启动服务/后台任务的shell脚本。
答案 3 :(得分:1)
如果你需要在浏览器中运行它,你应该确保php.ini文件中没有php执行限制,但是在mod_php(或者你正在使用的是什么)中没有设置限制阿帕奇。