Maison >développement back-end >Problème PHP >Comment détecter les erreurs fatales en php

Comment détecter les erreurs fatales en php

王林
王林original
2020-08-06 14:44:063840parcourir

Comment détecter les erreurs fatales en PHP : Vous pouvez utiliser la fonction register_shutdown_function() pour détecter les erreurs fatales. La fonction register_shutdown_function() indique que PHP déclenche un certain comportement de fonction à la fin du programme.

Comment détecter les erreurs fatales en php

Utilisez la fonction register_shutdown_function() pour capturer les erreurs fatales, ce qui signifie que PHP déclenche un certain comportement de fonction à la fin du programme.

(Tutoriel recommandé : Tutoriel graphique php )

Syntaxe :

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

Enregistre un rappel, qui sera exécuté lorsque le script sera terminé ou quitté () est appelé plus tard.

Paramètre :

  • rappel : abandonner le rappel pour être enregistré

  • paramètre : peut être transmis Entrez des paramètres supplémentaires pour transmettre les paramètres à la fonction d'abandon

Il existe quatre situations lorsque le programme se termine :

  • Une erreur s'est produite lors de l'exécution du code php

  • Le code php a été exécuté avec succès

  • Le code php a expiré

  • La page a été forcée de s'arrêter par l'utilisateur

(Tutoriel vidéo recommandé : Introduction à la programmation)

Exemple :

Nous personnalisons un comportement :

<?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);
        }
    }
}

Application :

<?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();

Journal des erreurs :

时间 : 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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn