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



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

在某个时候,我的应用程序必须创建数十个 PDF 文件,这会导致脚本超时......

我无法访问主机上的"set_time_limit"参数。

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

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

如何?

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

感谢您的帮助!

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

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";如果你已经处理了所有内容。

我认为@KoalaBear的解决方案行不通。是PHP超时而不是Jquery。

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

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

检查齿轮工

后台作业的一个很好的例子

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

您可以通过后台工作人员执行此操作。查看 intoGearman、Redis resque 或芹菜任务队列。不要让您的客户等待。

最新更新