【发布时间】:2011-09-08 23:33:01
【问题描述】:
我编写了一个 php 脚本,该脚本使用 exec 调用外部命令,该命令将空间数据库查询结果编译为 shape 文件。在具有大量记录(例如 15,000 条)的表中,执行此命令可能需要长达 7 分钟。该脚本在不需要太长时间(可能
【问题讨论】:
我编写了一个 php 脚本,该脚本使用 exec 调用外部命令,该命令将空间数据库查询结果编译为 shape 文件。在具有大量记录(例如 15,000 条)的表中,执行此命令可能需要长达 7 分钟。该脚本在不需要太长时间(可能
【问题讨论】:
脚本标头过早结束表示您的脚本超出了网络服务器对 CGI 脚本的超时时间。这是一个网络服务器超时,它与 php.ini 配置无关。您需要查看您的 CGI 处理程序配置以增加 CGI 脚本运行所允许的时间。
例如如果您使用的是 mod_fastcgi,您可能需要在 Apache 配置中指定以下选项:FastCgiServer -idle-timeout 600,这将使您超时 10 分钟。默认情况下,fastcgi 提供 30 秒。你可以在这里找到其他一些 fastcgi 选项http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html
【讨论】:
显然,Apache 2.4 中包含的默认 httpd.conf 文件不会自动包含 /conf/extra 下的额外文件 httpd-default.conf(可能是设计使然),其中包括超时范围。由于未定义 timeout 参数,它会恢复为默认值 30 秒,并且您的脚本会超时。
我做了以下解决:
包括 conf/extra/httpd-default.conf
另一种方法是将以下行简单地添加到 httpd.conf 文件中:
超时 300
保活开启
MaxKeepAliveRequests 100
KeepAliveTimeout 5
希望这可以帮助那里的人:)
【讨论】: