有没有充分的理由不设置 PHP 配置变量max_execution_time http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time to 0?
一位同事最近签入了对文件的更改,其中添加了:
ini_set('max_execution_time', 0);
对于在将输出返回给用户之前进行一些复杂处理的页面来说,默认值太低了。
手册中指出,设置的主要目的是:
防止写得不好的脚本占用服务器。
但还继续指出:
您的 Web 服务器可以有其他超时配置,这些配置也可能会中断 PHP 执行。阿帕奇有一个Timeout指令和IIS具有CGI超时功能。两者都默认为 300 秒。有关具体详细信息,请参阅您的 Web 服务器文档。
我们在 Apache 下运行,所以Timeout设置适用。有什么理由不设置max_execution_time
全球归零?我主要好奇的是,当我这样做时是否有我忽略的好处not将其设置为零。
冒着激怒您的风险;
你问错了问题。您不需要理由不偏离默认值,但反之亦然。你需要一个这样做的理由。运行 Web 服务器时,超时是绝对必要的,无缘无故地禁用该设置本质上是违背良好实践的,即使它运行在恰好有自己的超时指令的 Web 服务器上。
现在,至于真正的答案;在这种特殊情况下可能根本不重要,但是设置单独的系统是不好的做法。如果该脚本稍后在不同的服务器上以不同的超时运行怎么办?如果您可以有把握地说它永远不会发生,那很好,但良好的实践主要是考虑看似不可能的事件,而不是不必要地将完全不同系统的设置和功能捆绑在一起。对这些原则的忽视导致了软件世界中许多毫无意义的不兼容性。几乎每一次,他们都出乎意料。
如果稍后将 Web 服务器设置为运行其他仅继承 Web 服务器超时设置的运行时环境,该怎么办?举例来说,您后来需要一个由搬到另一个大陆的人用 C++ 编写的 15 年前的 CGI 程序,除了 Web 服务器的超时之外,它不知道任何超时。这可能会导致需要更改超时,并且由于 PHP 毫无意义地依赖于 Web 服务器的超时而不是其自身的超时,这可能会导致 PHP 脚本出现问题。或者反过来,由于某种原因您需要较小的 Web 服务器超时,但 PHP 仍然需要更高的超时。
将 PHP 功能与 Web 服务器绑定在一起并不是一个好主意,因为 Web 服务器和 PHP 负责不同的角色,并且应尽可能保持功能分离。当 PHP 端需要更多处理时间时,它应该是 PHP 中的一个设置,因为它与 PHP 相关,而不一定与 Web 服务器上的其他所有内容相关。
简而言之,这只是在没有必要的时候把事情混为一谈。
最后但并非最不重要的一点是,“静止不动”是正确的。你至少应该使用set_time_limit()
than ini_set()
.
希望这不会太居高临下和令人恼火。就像我说的,根据您的具体情况可能没问题,但最好不要假设您的情况是唯一的真实情况。就这样。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)