머리말
프로그래머라면 누구나 개발 중에 실수를 겪을 수도 있고, 다른 이유로 오류가 발생할 수도 있습니다. 물론, 사용자가 애플리케이션의 제약을 따르지 않거나 따르지 않는 경우에는 사용 시 일부 오류가 발생하기도 합니다. 이번 글에서는 PHP에서 예외 처리를 위해 Register_shutdown_function을 활용하는 방법을 주로 소개합니다. 필요한 경우 함께 배워볼 수 있습니다.
예제에 대한 자세한 설명
예를 들어 스크립트가 실행되었는지 확인하기 위해 속성을 false로 설정하고 실행이 완료되면 true로 설정하면 됩니다. Register_shutdown_function 함수에서 지정한 방법으로 코드에 표시된 대로 추가 예외 처리를 수행합니다.
class IndexController extends Controller { /** * 脚本执行是否完成 * @var bool */ protected $complete = false; public function __construct() { register_shutdown_function([$this, 'shutdown']); } /** * 异常处理 */ public function shutdown() { if ($this->complete === false) { dump('www.tanteng.me'); //此处应该输出日志并进行异常处理操作 } } }
이 방법으로 빠르게 찾을 수 있습니다. 스크립트 중단 여부, Register_shutdown_function을 통해 예외 처리 및 프로그램의 견고성 향상, 프로그램 중단 상태를 기록할 수 있어 로그를 통해 문제를 쉽고 빠르게 찾을 수 있습니다.
register_shutdown_function 실행 메커니즘
PHP는 호출할 함수를 메모리로 전송합니다. 이 함수는 페이지의 모든 PHP 문이 실행될 때 호출됩니다. 참고로 이때는 PHP 페이지가 아닌 메모리에서 호출되므로 경로 정보가 있으면 절대 경로를 사용해야 합니다. PHP는 이미 원본 페이지가 존재하지 않는다고 가정했기 때문입니다. 상대 경로가 전혀 없습니다.
다음과 같이 호출 조건을 이해할 수 있습니다.
1. 사용자에 의해 페이지가 강제로 중지된 경우
2. 프로그램이 실행된 경우 코드 타임아웃
3. PHP 코드 실행이 완료되면