ホームページ  >  記事  >  バックエンド開発  >  PHPで致命的なエラーをキャッチする方法

PHPで致命的なエラーをキャッチする方法

王林
王林オリジナル
2020-08-06 14:44:063812ブラウズ

PHP で致命的なエラーをキャッチする方法: register_shutdown_function() 関数を使用して致命的なエラーをキャッチできます。 register_shutdown_function() 関数は、PHP がプログラムの最後に特定の関数の動作をトリガーすることを示します。

PHPで致命的なエラーをキャッチする方法

register_shutdown_function() 関数を使用して致命的なエラーをキャプチャします。この関数は、PHP がプログラムの最後に特定の関数の動作をトリガーすることを示します。

(推奨チュートリアル: php グラフィック チュートリアル)

構文:

void register_shutdown_function(callable $callback[, mixed $parameter [, mixed $... ]])

スクリプトの実行が完了した後に実行されるコールバックを登録します。 exit() は後で呼び出されます。

パラメータ:

  • callback: 登録する中止コールバック

  • パラメータ: 渡すことができます追加のパラメータを入力して、中止関数にパラメータを渡します。

プログラムが終了する場合は、次の 4 つの状況があります。

  • 実行中にエラーが発生しました。 php コードの

  • php コードが正常に実行されました

  • php コードの実行がタイムアウトになりました

  • ユーザーによりページが強制的に停止されました

(推奨ビデオ チュートリアル: プログラミング入門)

例:

動作をカスタマイズします:

<?php
/**
 * Created by PhpStorm.
 * User: Xavier
 * Date: 2018/6/3
 * Time: 12:16
 */
class RegisterShutDownFunction
{
    /**
     * @author Xavier
     * @desc php 程序运行结束时候需要运行的函数
     */
    public static function register()
    {
        if ($error = error_get_last()) {
            // $filename 必须是一个绝对路径
            if (!defined(&#39;REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME&#39;)) {
                $filename = dirname(__FILE__) . DIRECTORY_SEPARATOR . &#39;register_shutdown_function.log&#39;;
            } else {
                $filename = REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME;
            }
            $message = &#39;时间 : &#39; . date(&#39;Y-m-d H:i:s&#39;) . PHP_EOL;
            $message .= &#39;文件 : &#39; . $error[&#39;file&#39;] . PHP_EOL;
            $message .= &#39;行数 : &#39; . $error[&#39;line&#39;] . PHP_EOL;
            $message .= &#39;错误 : &#39; . $error[&#39;message&#39;] . PHP_EOL;
            $message .= &#39;类型 : &#39; . $error[&#39;type&#39;] . PHP_EOL . PHP_EOL;
            file_put_contents($filename, $message, FILE_APPEND);
        }
    }
}

アプリケーション:

<?php
/**
 * Created by PhpStorm.
 * User: Xavier
 * Date: 2018/6/3
 * Time: 12:27
 */
 // 定义一个常量来记录程序停止后,出现错误的 LOG 日志文件
define(&#39;REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME&#39;, dirname(__FILE__) . DIRECTORY_SEPARATOR . &#39;11.log&#39;);
// 包含异常处理的类文件
include &#39;lib/RegisterShutDownFunction.php&#39;;
$registerShutDownFunction = new RegisterShutDownFunction();
// register_shutdown_function 函数必须在所有的程序执行之间注册
register_shutdown_function(array($registerShutDownFunction, &#39;register&#39;));

// 注册成功之后调用一个不存在的方法 aa();
aa();

エラー ログ:

时间 : 2018-06-03 04:56:02
文件 : /Users/x/www/php/exception/2.php
行数 : 17
错误 : Uncaught Error: Call to undefined function aa() in /Users/x/www/php/exception/2.php:17
Stack trace:
#0 {main}
  thrown
类型 : 1

以上がPHPで致命的なエラーをキャッチする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。