我正在开发一个依赖于批量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 或芹菜任务队列。不要让您的客户等待。