PHP 脚本具有允许它们执行的最长时间,如 php.ini 中所述。
如果您真的想要,可以通过添加以下行来规避这种情况:
ini_set('max_execution_time', 123456);
其中123456是您希望限制为的秒数。
您还可以使用set_time_limit函数,我只是刚刚发现并假设它做同样的事情。不过,我一直只是做前者。
您可以在php.ini文件中更改它,但您可能正在使用脚本执行批处理操作或其他操作。您不希望最终用户访问的PHP脚本在那里悬挂30秒或更长时间,因此您最好将其保留为默认值,甚至在php.ini文件中将其关闭,并根据需要设置max_execution_time。
正如seenge在下面的评论中指出的那样,您可以将max_execution_time设置为0以阻止错误发生,但是seenge说至少对于Web请求是正确的,你真的不应该这样做。对于php命令行解释器,此行为是默认的。
如果您看到最终用户应该通过 Web 请求使用的内容出现此问题,则可能必须执行一些分析以找出真正原因。如果您正在执行MySQL查询,请首先打开慢速查询日志。它特别擅长让您知道何时忘记了索引,或者您是否正在做其他效率低下的事情。
你也可以把一些东西推来推去,以模糊地了解哪些位正在减慢速度,只要确保你之后不要留下任何一个!$s = microtime(true); yourstuff(); var_dump(microtime(true)-$s);
如果仍在努力寻找根本原因,请在本地计算机上设置 xdebug 并运行探查器。该扩展可用作预编译的Windows二进制文件(尽管似乎有一个令人困惑的版本数组)。您可以使用 wincachegrind 检查运行探查器的结果。