0

我在 PHP 中看到了很多关于这个错误的问题。但是到处都给出了设置时间限制的解决方案。

但我想要做的是,检测错误,如果发生,然后切换到另一个行动方案。我的意思是,如果我的请求超过了我设置的最大时间,那么它不应该给出错误消息并停止,而是继续执行其他一些代码块。我怎样才能做到这一点?

=======

我刚刚发现此代码是一个站点,它可以帮助吗?

<?php

//open error reporting, the error message is required in this script
error_reporting(1);

//for testing, set maximum execution to 1 second
set_time_limit(1);

//turn on output buffering and set callback function
ob_start('callback');

//------------------------------------------------------------------------------

//main program(dead loop)
while (true);

//script completed(impossible)
echo 'Completed!';

//------------------------------------------------------------------------------

/**
 * output callback, execute when end of the request
 *
 * @param string $buffer
 * @return string
 */
function callback($buffer) {
    if (false !== (stripos($buffer,'<b>Fatal error</b>'))) {
        if (false !== (stripos($buffer,'Maximum execution'))) {
            $buffer = 'ycTIN.com , Server Busy';
        } else {
            $buffer = 'ycTIN.com , Server Internal Error';
        }
    }
    return $buffer;
}
?>
4

4 回答 4

0

这不容易。您可以在脚本的开头保存当前时间,然后调用一个函数,每隔几行检查一次时间差。虽然这不是很有效,它会使你的代码混乱。

于 2010-05-13T10:56:37.420 回答
0

无法完成,因为超过您的最大执行时间将导致 php 出现致命错误

于 2010-05-13T11:05:06.473 回答
0

如果您将其设置为小于最大执行时间的值,pcntl_alarm可能会有所帮助。

于 2010-05-13T12:36:52.747 回答
0

那我想没办法了。我只是将时间限制设置为无限。这样它应该在某个时候结束.. :)

于 2010-05-14T08:16:43.090 回答