PHP长时间运行脚本,jQuery避免超时?

时间:2014-02-28 08:17:56

标签: javascript php jquery

我正在开发一个依赖于批量PDF文档创建的商业应用程序。

在某个时间我的应用程序必须创建几十个PDF文件,这会使脚本超时......

我无法访问托管服务器上的“set_time_limit”参数。

现在我依靠手动操作:我的脚本运行5个文件,然后停止。我刷新浏览器页面,重新启动其他5个脚本,依此类推。这不是一个可靠的解决方案,因为用户必须保持专注并定期点击刷新!

我正在寻找一种“替代手动用户操作”的解决方案。 PHP似乎不是解决方案(由于超时限制)。 jQuery会成为答案吗?

怎么样?

我搜索了“长轮询”或“长时间运行”主题,但没有得到任何合适的解决方案。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

永远不会是一个很好的解决方案。但是你想要解决它的方式是可能的。但仍然不建议:)

function callBackup() {
    $.ajax({
        url : 'backup.php',
        success : function(response) {
            // Simple check if backup processed all files
            if (response != '1') {
                // Run backup again
                callBackup();
            } else {
                alert('Backup done');
            }
        }
    });
}

服务器上的脚本需要回显“1”;如果你已经处理了所有事情。

答案 1 :(得分:0)

我认为@ KoalaBear的解决方案不会起作用。它是PHP,而不是Jquery。

Set_time_limit(0)是解决此问题的最简单方法。

另一种解决方案是将此耗时任务委派给后台进程。

检查Gearman

background job

的一个很好的例子

但是如果您使用Gearman,则必须定期轮询服务器以检查作业的状态

答案 2 :(得分:0)

您可以由后台工作人员执行此操作。查看Gearman,Redis resque或celery任务队列。不要让你的客户等待。