【发布时间】:2011-07-29 13:09:37
【问题描述】:
我有一个 PHP 脚本,大约需要 30 秒才能完成。通过 php cli 运行它时,它会成功完成(回显确认并将相关结果保存在本地文件系统上的文件中)。如果我通过 Apache 运行相同的文件,它似乎超时或什么,大约 30 秒左右后,Firefox 让我下载一个空文件,而不是预期的确认消息(其他浏览器对它的处理不同,但基本上,一些没有按计划进行)。应该在文件系统上创建的文件没有创建。
知道执行时间可能很长,我在脚本的开头设置了set_time_limit(400)。
关于如何调试它的任何提示?什么可能导致脚本在 Apache 中超时,但在 cli 中却没有?
【问题讨论】:
-
您的主机允许 set_time_limit 吗?
-
当您从命令行运行脚本时,PHP 不会强制执行执行限制。这是从命令行运行 PHP 与作为 (f)cgi 或 apache 模块运行的 PHP 之间的(次要)差异之一。见:php.net/manual/en/features.commandline.php
-
您的服务器是否有权写入您保存文件的特定位置。
-
是的,我可以使用同一服务器上的其他脚本将文件写入该位置。 set_time_limit 是允许的,我将其设置为 400,如我的问题中所述。 php.ini 中的 max_execution_time 设置为 insane 2000,系统上只有 1 个 php.ini 文件。
-
嘿 Salty 给我们一个更新,拜托。你注意到新的答案了吗?