它可能是你正在运行到一个竞争条件在这里。
它基本上适用于例如触发在内存中的关机功能的致命和致命的早期超时触发关机功能:
register_shutdown_function(function() {
# consume all memory
echo "break my pain\n";
$a = ['hello'];
while($a[] = $a);
});
set_time_limit(1);
while(1) usleep(100);
它也可以倒过来,先触发致命对于内存,那么FATAL在关机功能超时:
register_shutdown_function(function() {
set_time_limit(1);
while(1) usleep(100);
});
ini_set('memory_limit', '1');
$a = array_fill(0, 1024, 'hello');
while($a[] = $a);
这还没有100%的解释笨里面发生了什么,但是我想说返回触发execu后的查询时间太长,因此时间限制也是如此。由于您的旧PHP版本,这很难重现。如果我现在评估PHP代码,我会得到代码已被评估的消息,并在哪一行中找到eval命令(PHP 5.4)。尝试使用PHP 5.4重现以获取更多信息。您将从PHP 5.2以来的速度改进中受益匪浅。你错过了很多。
早些时候:
Fatal error: Maximum execution time of 300 seconds exceeded in Unknown on line 0
这闻起来像一个启动错误。
什么引发了你的第一个错误很难说,你切断了它。要么你已经得到了可以通过APC部分处理的代码,你可以在同一个脚本中看到两个致命的错误。
但是,如果您可以重现它,请尝试不使用APC。如果仍然可以,请在PHP错误跟踪器中报告。
如果不能,请用APC错误跟踪报告问题。只要看到PHP 5.2.6,你可能需要报告并修复它自己的;虽然;) - 尝试重现与当前稳定的PHP版本以及然后。这可能发生
你确定他们是来自同一个脚本?或者最大执行时间错误触发另一个操作,这会导致内存大小错误(通过register_shutdown_function()) – periklis
您可以重现它吗? –
@periklis:不可能。最大执行时间是致命的,并立即杀死脚本。允许更多的代码运行只会允许绕过限制。同样是最大的记忆。 –