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

最大実行時間よりも小さい値に設定すると、 pcntl_alarmが役立つ場合があります。

于 2010-05-13T12:36:52.747 に答える
0

それでは仕方がないと思います。制限時間を無限に設定しただけです。そうすれば、いつか終わるはずです.. :)

于 2010-05-14T08:16:43.090 に答える
0

最大実行時間を超えるとphpで致命的なエラーが発生するため、実行できません

于 2010-05-13T11:05:06.473 に答える