Php 在执行繁重查询时加载消息而不是超时

Php 在执行繁重查询时加载消息而不是超时,php,zend-framework-mvc,Php,Zend Framework Mvc,我正在用db2数据库运行Zend server和ZF1。对于某些导出,查询需要很长时间(>50秒),这会导致408超时错误。我正在寻找一种解决方案,在运行SQL查询时在客户端上显示加载消息。 非常感谢您的帮助。您需要增加php允许的最长执行时间,以便它可以完成,而不会以408返回代码终止。本地或仅针对该脚本: 或全球: 显示加载进度的最简单方法是使用AJAX请求执行长作业。主页面应显示加载进度,并使用Javascript向导出脚本发出请求。导出脚本完成后,主页面会显示一条成功消息 如果导出脚本

我正在用db2数据库运行Zend server和ZF1。对于某些导出,查询需要很长时间(>50秒),这会导致408超时错误。我正在寻找一种解决方案,在运行SQL查询时在客户端上显示加载消息。
非常感谢您的帮助。

您需要增加php允许的最长执行时间,以便它可以完成,而不会以408返回代码终止。本地或仅针对该脚本: 或全球:

显示加载进度的最简单方法是使用AJAX请求执行长作业。主页面应显示加载进度,并使用Javascript向导出脚本发出请求。导出脚本完成后,主页面会显示一条成功消息

如果导出脚本创建了需要下载的CSV文件,而不是将该CSV作为响应正文发送,则可以将其输出到服务器上的文件,然后在响应中发送该文件的url。主页中的Javascript可以显示该url,并提示用户在成功消息中下载该url


另一种方法是构建作业队列。这可以使用排队系统或仅使用数据库中的作业表来完成。当用户请求导出时,您将创建一个新作业。您需要一个在服务器上运行的进程,例如cron作业,它检查表中的所有新作业,当有新作业时,它运行导出并更新作业的状态。在您的页面中,您需要使用Javascript或只需重新加载页面,定期检查作业的状态,并在作业完成时显示一条成功消息。同样,如果导出创建了一个文件,服务器进程需要写入该文件,您需要在成功消息中包含一个要下载的链接。

谢谢,我将尝试此解决方案