PHP 스크립트는 continue executing after the HTTP page request 일 수 있습니다. 어떻게하면 마칠 때 마침내 실행을 멈출 수 있습니까?PHP 스크립트 자체를 중단하거나 낙태를 감지 할 수 있습니까?
또한 OS가 강제로 스크립트를 중단 할 때를 감지하는 이벤트가 있습니까? 또는 내부 타이머가 max_execution_time
을 예측하도록 유지하려면 어떻게해야합니까?
PHP 스크립트는 continue executing after the HTTP page request 일 수 있습니다. 어떻게하면 마칠 때 마침내 실행을 멈출 수 있습니까?PHP 스크립트 자체를 중단하거나 낙태를 감지 할 수 있습니까?
또한 OS가 강제로 스크립트를 중단 할 때를 감지하는 이벤트가 있습니까? 또는 내부 타이머가 max_execution_time
을 예측하도록 유지하려면 어떻게해야합니까?
register_shutdown_function
을 사용하여 스크립트 실행이 끝날 때 호출 할 함수를 등록 할 수 있습니다. 이를 사용하여 스크립트가 종료 된시기를 감지하고 특정 조치를 수행 할 수 있습니다.
exit()/die()은 PHP 스크립트를 중지합니다.
스크립트를 언제 멈출지를 알기 위해서는 microtime을 타이머로 사용하고 최대 실행 시간을 상수 (php.ini 파일에서 가져 오기)로 저장하면됩니다.
Connection handling 정보를 확인할 수도 있습니다. connection_aborted() 및 connection_status()
등의 문제가있는 경우 해결할 문제는 무엇인가요?
음, $start=microtime(true)
을 시작하면 타임 스탬프가 반환됩니다. 그런 다음 microtime(true)
을 계속 점검하고 시작 시간에서 빼서 실행 후 초 수를 얻으십시오.
아니요, 요청이 너무 길어서 스크립트를 종료로 "catch"할 수 없습니다. 종료 처리기에서 마지막 순간에 할 일을 시도 할 수도 있지만 PHP가이를 존중할 지 확신 할 수 없습니다.
정확하게 원하는 기능을 수행하는 데 사용 된 것처럼 보입니다 (connection_timeout()). 그러나 더 이상 사용되지 않고 제거되었습니다. 그러나 이것에 대한 대체품이 있는지 모릅니다.
pcntl-alarm을 보시면 스크립트가 신호를 보낼 수 있습니다. 또한 OS에서 보낼 수있는 kill 신호를 잡는 방법에 대한 샘플도 포함되어 있습니다. 그리고 정말로 죽으십시오.
요청이 종료 될 때 콜백을 사용하려면 register_shutdown_function(myfunction)
을 사용하십시오.
대부분의 POSIX 환경과 마찬가지로 PHP도 signal handlers을 지원합니다. SIGTERM
이벤트에 대한 자체 처리기를 등록 할 수 있습니다.
function my_abort_handler($signo) {
echo "Aborted";
}
pcntl_signal(SIGTERM, "my_abort_handler");
종료 콜백은 스크립트 실행이 완료된 경우에만 호출된다는 점에 유의하십시오. 사용자가 연결을 중단하면 호출되지 않습니다. –