PHP 脚本在 Apache 上 60 秒后超时

PHP 脚本在 Apache 上 60 秒后超时

我继承的一个旧网站有一个脚本,用户可以从 CMS 运行该脚本,该脚本基本上会从数据库表中提取所有产品并将其导出为 xls 文件。记录并不多,大约 5000 条,直到最近它一直运行良好。随着产品数量的增加,脚本执行时间也增加了,最近它开始超过服务器max_execution_time30 秒的时间。

当我查看服务器上运行的进程时,我注意到一旦TIME+达到 60 秒,脚本就会终止。

如果我将 SQL 结果限制为 4500,则脚本在 60 秒内执行,没有任何问题。

SQL 查询似乎没问题。我检查了执行时间,不到 40 秒。

set_time_limit (120);我也尝试通过同时使用和来延长脚本的执行时间ini_set('max_execution_time', 120);,但是这样做时,脚本不会运行一次 120 秒,而是运行 2-3 次,每次 60 秒,然后死亡,然后作为新进程返回。

任何帮助将不胜感激。

答案1

如果问题出在数据库方面,我怀疑是缺少索引。尝试

EXPLAIN ANALYSE SELECT ...

发送到服务器的查询。它应该会告诉你哪些部分耗时较长。有关 EXPLAIN 的详细说明,你可以使用http://explain.depesz.com/

您能否在后台将 xls 生成卸载到服务器脚本中?然后可以将结果链接到网站上或邮寄给请求者。这是 Rails 世界中的常用方法(即使很少设置超时)。

相关内容