gpt4 book ai didi

php - PHP max_execution_time 的确切含义

转载 作者:行者123 更新时间:2023-12-04 14:59:21 24 4
gpt4 key购买 nike

短语“最长执行时间”含糊不清:它可能意味着 (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 作业,尽管它的 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 正在测量 CPU 时间:
function cputime() {
$data = getrusage();
return $data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1000000;

有人可以进一步澄清吗?

最佳答案

这完全取决于您的脚本。 getrusage不是衡量它的可靠方法。您对 3 种测量方法感到困惑,而不是 2 种:

  • 自脚本启动以来的绝对时间
  • 脚本的运行时间,所以 1. 减去系统调用
  • CPU 繁忙的实际时间,因此 2. 减去其他由于等待状态等原因引起的空闲时间
  • getrusage措施 3,而不是记录在案的内容。因此,您看到了相互矛盾的结果 - 显然您的脚本有 14 秒的一般等待状态和其他非事件时段, 没有 实际上完全像你一样屈服 system或流媒体操作。

    正如 PHP 文档所述,Windows 使用方法 1,而 *nix 系统使用方法 2。没有人使用 3,因为它作为超时实际上没有意义 - 这意味着当系统负载高且等待状态上升时超时变得非常严格.

    关于php - PHP max_execution_time 的确切含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20493248/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com