PHP 脚本在 max_execution_time 后没有中止(XAMPP,XDebug)
PHP Script didn't abort after max_execution_time (XAMPP, XDebug)
我有一个带有无限循环的 PHP 脚本。
当我 运行 使用 AJAX 或直接在浏览器中使用此脚本时,服务器正在尝试执行此脚本。问题是:30 秒后服务器仍在执行脚本。 没有"Maximum execution time exceeded" 错误。在 php.ini 文件中 max_execution_time 设置为 30。由于这个问题,服务器 不再可用 。我不能 运行 AJAX 的任何其他脚本。我必须在 XAMPP 中重新启动 Apache。
为什么服务器在 30 秒后没有中止?
我正在使用 XAMPP 和 XDebug。
// 更新 1:
PHP 脚本:
<?php
while(true)
echo 'test';
我知道这段代码没有任何意义。我只是想知道,为什么服务器在 30 秒后没有中止执行...
**//更新 2:**我关闭了 XDebug,并将代码更改为:
<?php
$x = 0;
while(true)
$x += 1;
现在没问题了:服务器在 30 秒后中止脚本并出现 "max execution time" 错误。
但是,服务器仍然无法使用 "echo" 语句中止脚本(即使禁用了 XDebug)。同样的问题是当我尝试在没有 "echo" 但启用 XDebug 的情况下执行脚本时。
所以,当我使用 "echo" 或 "XDebug" 时似乎有问题。
仅当没有 'echo' 并且 XDebug 被禁用时,脚本才会正确中止。
我对我的案例进行了更改:
xampp\phpMyAdmin\libraries\config.default.php
搜索:`$cfg['ExecTimeLimit']
您可以将右手值更改为任何更高的值,例如“6000”。
它对我有用。
完成!
我在PHP Storm中关闭了"Litening for PHP Debug Connections",问题解决了。
我也运行关注这个问题。对我来说,一旦启用并自动启动了 xdebug,无论如何 max_execution_time 都会设置为 0。我必须禁用它才能将它作为一个值。至少现在我知道在我的开发环境中,启用 xdebug 时无法进行超时测试。
在我的例子中,如果没有 运行 register_shutdown_function,脚本会被网络服务器杀死。由于 PHP 没有处理超时,所以除了内部 500 错误外,我不会收到任何错误。 Bugsnag 不会收到通知。
我有一个带有无限循环的 PHP 脚本。 当我 运行 使用 AJAX 或直接在浏览器中使用此脚本时,服务器正在尝试执行此脚本。问题是:30 秒后服务器仍在执行脚本。 没有"Maximum execution time exceeded" 错误。在 php.ini 文件中 max_execution_time 设置为 30。由于这个问题,服务器 不再可用 。我不能 运行 AJAX 的任何其他脚本。我必须在 XAMPP 中重新启动 Apache。 为什么服务器在 30 秒后没有中止? 我正在使用 XAMPP 和 XDebug。
// 更新 1: PHP 脚本:
<?php
while(true)
echo 'test';
我知道这段代码没有任何意义。我只是想知道,为什么服务器在 30 秒后没有中止执行...
**//更新 2:**我关闭了 XDebug,并将代码更改为:
<?php
$x = 0;
while(true)
$x += 1;
现在没问题了:服务器在 30 秒后中止脚本并出现 "max execution time" 错误。 但是,服务器仍然无法使用 "echo" 语句中止脚本(即使禁用了 XDebug)。同样的问题是当我尝试在没有 "echo" 但启用 XDebug 的情况下执行脚本时。 所以,当我使用 "echo" 或 "XDebug" 时似乎有问题。 仅当没有 'echo' 并且 XDebug 被禁用时,脚本才会正确中止。
我对我的案例进行了更改: xampp\phpMyAdmin\libraries\config.default.php
搜索:`$cfg['ExecTimeLimit']
您可以将右手值更改为任何更高的值,例如“6000”。 它对我有用。
完成! 我在PHP Storm中关闭了"Litening for PHP Debug Connections",问题解决了。
我也运行关注这个问题。对我来说,一旦启用并自动启动了 xdebug,无论如何 max_execution_time 都会设置为 0。我必须禁用它才能将它作为一个值。至少现在我知道在我的开发环境中,启用 xdebug 时无法进行超时测试。
在我的例子中,如果没有 运行 register_shutdown_function,脚本会被网络服务器杀死。由于 PHP 没有处理超时,所以除了内部 500 错误外,我不会收到任何错误。 Bugsnag 不会收到通知。