短语“最长执行时间”是不明确的:它可能意味着(a)自脚本启动以来经过的时间,或(b)脚本占用的总cputime(包括或排除操作系统调用所占用的cputime)
kuba这里非常有趣的帖子Real max_execution_time for PHP on linux发现这取决于PHP是在Unix还是Windows上运行。实质上,他发现在Unix上它是(b),在Windows或Cygwin上它是(a)。
但是,我的服务器是Linux 2.6.32-358.18.1.el6.x86_64#1 SMP x86_64 x86_64 x86_64 GNU / Linux,我有一个cron作业,在经过30秒的时间后,尽管有cpu时间,但仍然会被删除不到16秒:
[Tuesday, 10-Dec-2013 10:22:33 GMT] Begin, cputime=0 secs.
[Tuesday, 10-Dec-2013 10:22:58 GMT] starting zip_close, cputime=10.12946 secs.
[10-Dec-2013 10:23:03 UTC] PHP Fatal error: Maximum execution time of 30 seconds exceeded in xxx.php on line 149
这与库巴的发现相矛盾。我的是PHP 5.3.26和IU'm测量cpu时间:
function cputime() {
$data = getrusage();
return $data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1000000;
任何人都可以进一步澄清吗?
答案 0 :(得分:5)
这完全取决于您的脚本。 getrusage
不是衡量它的可靠方法。您在3种测量方法之间感到困惑,而不是2:
getrusage
措施3,而不是记录的内容。因此,您看到了相互矛盾的结果 - 显然您的脚本有14秒的常规等待状态和其他非活动时段,没有实际上完全像您使用system
或流操作一样产生。< / p>
由于PHP文档状态Windows使用方法1,而* nix系统使用方法2.没有人使用3,因为它作为超时并不真正有意义 - 这意味着当系统负载很高时超时会变得极其紧张等待状态上升。
答案 1 :(得分:0)
查看文档:
http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time
程序员如何决定实施这个要求显然是另一个故事:) 这是底层操作系统非常重要的案例之一。有关特定操作系统上的CPU时间的可用API将清楚地阐明问题。
这个高级要求(脚本运行时间)它是不明确的,并且可以由OS以许多不同的方式解释。证据就是你得到的不同时间。
所以有很多“正确答案”,每个操作系统只有一个......
答案 2 :(得分:0)
AFAIK它依赖于操作系统。根据操作系统,执行shell exec或查询所花费的时间(例如windows)或wont(例如linux)将包含在max_execution_time的内容中。