register_shutdown_function 함수 세부 정보 - 스크립트 종료 시 콜백 함수 실행

6410 단어 function
register_shutdown_function — Register a function for execution on shutdown.  ps:Registers a  callback  to be executed after script execution finishes or exit() is called.
      1.각본은 항상 죽고, 항상 그렇게 예쁘지는 않다.사용자에게 치명적인 오류나 공백 페이지를 보여주고 싶지 않습니다. (display_errors가 off로 설정된 경우)PHP에 register_ 라는 게 있어요.shutdown_function의 함수는 닫을 때 호출될 수 있는 다른 함수를 설정할 수 있습니다.즉, 우리의 스크립트 실행이 완료되거나 의외로 죽어서 PHP 실행이 종료될 때, 우리의 이 함수는 호출될 것이다.따라서 우리는 스크립트 시작 부분에 변수를false로 설정하고 스크립트 끝에true로 설정하는 방법을 사용하여 PHP가 리셋 함수를 닫고 스크립트의 완성 여부를 검사할 수 있습니다.만약 우리의 변수가 여전히false라면, 우리는 스크립트의 마지막 줄이 실행되지 않았다는 것을 알 수 있기 때문에, 이것은 틀림없이 프로그램에서 어떤 사람이 처형될 때까지 실행될 것이다.나는 치명적인 오류가 표시될 때 사용자에게 어떻게 적당한 피드백을 해야 하는지 보여주는 아주 기본적인 예를 준비했다.치명적인 오류를 표시하는 것을 닫을 수 있습니다. (display_errors와 error_reporting을 설정할 수 있습니다.) 예를 보기 좋게 할 수 있습니다.
<?php
$clean = false;
function shutdown_func(){
    global $clean;
    if (!$clean){
        die("not a clean shutdown");
    }
    return false;
}
register_shutdown_function("shutdown_func");
$a = 1;
// 
$a = new FooClass(); 
$clean = true;
?>

  2.PHP 제공 register_shutdown_function () 이 함수는 스크립트가 종료되기 전에 등록된 함수, 즉 PHP 프로그램이 실행된 후에 실행할 수 있는 함수입니다.
<?php
$starttime = microtime(true);
function Test()
{
    $starttime = microtime(true);   
    if(!file_exists('test.txt')){     
        $Str = fopen('test.txt',"w+"); // apache       
        fwrite($Str," , :$starttime");
        fclose($Str);
        echo " ! :$starttime";
    }
    else 
    { 
        echo ' ';
    }
}
register_shutdown_function('Test');
echo " :".$starttime."<br>"; 
for($i=0;$i<1000;$i++){
    echo "Echo<br/>";
}
exit;
?>

  3.register_shutdown_function 실행 메커니즘은: PHP가 호출할 함수를 메모리로 불러옵니다.페이지의 모든 PHP 문장이 완료되면 이 함수를 호출합니다.이때 메모리에서 호출됩니다. PHP 페이지에서 호출되지 않기 때문에 위의 예는 상대적인 경로를 사용할 수 없습니다. 왜냐하면 PHP는 이미 원래의 페이지가 존재하지 않기 때문입니다.기본적으로 현재 경로는apache의 경로입니다. (getcwd () 테스트를 사용할 수 있습니다. 구체적인 테스트는 매뉴얼을 보십시오.)
<?php
function test() 
{
    echo ' ';
    // , 。 
    if($handle = fopen('D:/tx.txt',"w+"))
    {
        fwrite($handle, 'you are write after exit');
        fclose($handle);
    }
}
// , ;  test 。
register_shutdown_function('test');
exit();
?>

주의:register_shutdown_function은 모든 PHP 문장을 실행한 후에 함수를 호출하는 것입니다. 클라이언트가 브라우저 페이지를 닫을 때 함수를 호출하는 것으로 이해하지 마십시오.호출 조건을 이해할 수 있습니다. 1. 페이지가 사용자에게 강제로 정지되었을 때;2. 프로그램 코드가 시간 초과로 실행될 때;3. PHP 코드가 완료되었을 때.

좋은 웹페이지 즐겨찾기