>  기사  >  백엔드 개발  >  PHP에서 치명적인 오류를 잡는 방법

PHP에서 치명적인 오류를 잡는 방법

王林
王林원래의
2020-08-06 14:44:063799검색

PHP에서 치명적인 오류를 잡는 방법: Register_shutdown_function() 함수를 사용하여 치명적인 오류를 잡을 수 있습니다. Register_shutdown_function() 함수는 PHP가 프로그램 끝에서 특정 함수 동작을 트리거함을 나타냅니다.

PHP에서 치명적인 오류를 잡는 방법

Register_shutdown_function() 함수를 사용하면 치명적인 오류를 잡을 수 있습니다. 이는 PHP가 프로그램 끝에서 특정 함수 동작을 트리거한다는 의미입니다.

(추천 튜토리얼: php 그래픽 튜토리얼)

구문: ​​

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

콜백을 등록하세요. 스크립트 실행이 완료된 후 또는 종료() 후에 호출됩니다.

매개변수:

  • callback: 등록할 중단 콜백

  • 매개변수: 추가 매개변수를 전달하여 매개변수를 중단 함수에 전달할 수 있습니다.

프로그램이 종료되는 상황은 네 가지입니다.

  • 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.