Linux 下的 PHP 通过 setitimer 中的 ITIMER_PROF 实现 ini(max_execution_time) 和 set_time_limit,但不使用 ITIMER_REAL。通过谷歌它,我在 php.net 中找到了一个关于这个问题的线程https://bugs.php.net/bug.php?id=65596。相关 PHP 手册http://php.net/manual/en/function.set-time-limit.php注意
set_time_limit() 函数和配置指令 max_execution_time 只影响脚本本身的执行时间。在确定脚本运行的最长时间时,不包括在脚本执行之外发生的活动所花费的任何时间,例如使用 system() 的系统调用、流操作、数据库查询等。在测量时间是真实的 Windows 上,情况并非如此。PHP 似乎设计为使用 ITIMER_PROF。
我想知道为什么 PHP 超时机制是这样设计的,如果我在 Zend/zend_execute_API.c 中将 ITIMER_PROF 更改为 ITIMER_REAL,会显示什么副作用?