2009-09-15 4 views

답변

5

register_shutdown_function을 사용하여 스크립트 실행이 끝날 때 호출 할 함수를 등록 할 수 있습니다. 이를 사용하여 스크립트가 종료 된시기를 감지하고 특정 조치를 수행 할 수 있습니다.

+0

종료 콜백은 스크립트 실행이 완료된 경우에만 호출된다는 점에 유의하십시오. 사용자가 연결을 중단하면 호출되지 않습니다. –

8

exit()/die()은 PHP 스크립트를 중지합니다.

스크립트를 언제 멈출지를 알기 위해서는 microtime을 타이머로 사용하고 최대 실행 시간을 상수 (php.ini 파일에서 가져 오기)로 저장하면됩니다.

Connection handling 정보를 확인할 수도 있습니다. connection_aborted()connection_status()

등의 문제가있는 경우 해결할 문제는 무엇인가요?

1

음, $start=microtime(true)을 시작하면 타임 스탬프가 반환됩니다. 그런 다음 microtime(true)을 계속 점검하고 시작 시간에서 빼서 실행 후 초 수를 얻으십시오.

아니요, 요청이 너무 길어서 스크립트를 종료로 "catch"할 수 없습니다. 종료 처리기에서 마지막 순간에 할 일을 시도 할 수도 있지만 PHP가이를 존중할 지 확신 할 수 없습니다.

정확하게 원하는 기능을 수행하는 데 사용 된 것처럼 보입니다 (connection_timeout()). 그러나 더 이상 사용되지 않고 제거되었습니다. 그러나 이것에 대한 대체품이 있는지 모릅니다.

2

pcntl-alarm을 보시면 스크립트가 신호를 보낼 수 있습니다. 또한 OS에서 보낼 수있는 kill 신호를 잡는 방법에 대한 샘플도 포함되어 있습니다. 그리고 정말로 죽으십시오.

4

요청이 종료 될 때 콜백을 사용하려면 register_shutdown_function(myfunction)을 사용하십시오.

대부분의 POSIX 환경과 마찬가지로 PHP도 signal handlers을 지원합니다. SIGTERM 이벤트에 대한 자체 처리기를 등록 할 수 있습니다.

function my_abort_handler($signo) { 
    echo "Aborted"; 
} 

pcntl_signal(SIGTERM, "my_abort_handler"); 
관련 문제