최대 실행 시간에 도달했을 때 치명적인 오류를 잡아 내고 사용자에게 더 나은 메시지를 줄 수있는 방법이 PHP에 있습니까?PHP 최대 트래핑 최대 실행 시간 오류
답변
파일의 실행 후 "완료"플래그를 설정하고, 셧다운 기능을 등록하려고 사용하여 함수를 적용하는 해당 플래그가 정의되어 있는지 확인합니다
치명적인 오류가 발생하지 않으므로 원래의 대답은 작동하지 않습니다. 어쨌든 읽으려면 개정 내역을 확인하십시오.
나의 유일한 추측은 register_shutdown_function
을 사용할 수 있다는 것입니다. 스크립트 시작 부분에 변수를 설정하고 스크립트가 성공적으로 완료되면 변수를 지우십시오. 변수 것을 확인하고는 아직 설정되어 경우에 역할을하는 함수를 작성하고 register_shutdown_function
http://php.net/manual/en/function.register-shutdown-function.php
처음 두 답변을 읽은 후에는 register_shutdown_function()
자신을 테스트해야했습니다. 실행하지 않을 것입니다. 결국, 더 이상 메모리가 없거나 실행 시간이 경과하면 어떻게 사용자 기능을 실행할 수 있습니까? 나는 종료 기능이 이을 실행한다는 것을 알게되어 놀랐다. 심지어 OOM 상황에서도, 또는 실행 시간이 지나치게 길 때였다. 개념의 증명 :
메모리의 한계를 테스트하려면 :
<?php
function asdf() { echo "omg\n"; }
register_shutdown_function('asdf');
ini_set('memory_limit', '1000');
$x = '';
while(true) {
$x .= 'lkajsdlfkjasldkfjlaskdfjasldkfj';
}
출력 :
cat scratch.php
<?php
function asdf() { echo "omg\n"; }
register_shutdown_function('asdf');
set_time_limit(1);
while(true) {}
출력 :
PHP Fatal error: Maximum execution time of 1 second exceeded in /home/scratch.php on line 7
PHP Stack trace:
PHP 1. {main}() /home/scratch.php:0
Fatal error: Maximum execution time of 1 second exceeded in /home/scratch.php on line 7
Call Stack:
0.0002 80200 1. {main}() /home/scratch.php:0
omg
PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 169540 bytes) in /home/scratch.php on line 9
PHP Stack trace:
PHP 1. {main}() /home/scratch.php:0
Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 169540 bytes) in /home/scratch.php on line 9
Call Stack:
0.0002 81360 1. {main}() /home/scratch.php:0
omg
실행 시간을 테스트하려면
메시지가 으로 표시 되려면 PHP 오류 출력 전에 PHP 오류 출력을 완전히 비활성화해야합니다. 어쨌든 프로덕션 사이트의 모범 사례입니다.
최대 실행 시간에 도달했습니다! = 허용 메모리가 고갈되었습니다 루프 및 절전 기능으로 최대 실행 시간에 도달하는 스크립트를 만들기가 쉽지 않습니다. 잠자기 시간이 실행 시간을 멈추게합니다 ... – shfx
나쁜. 게시물을 편집하여 메모리 고갈 대신 실행 시간 제한 테스트 –
API 수준에서 오류를 트래핑 할 수있는 방법이 없다면 '블루 스크린'이 표시 될 때 Windows가 수행하는 것과 같이 치명적인 오류가 발생할 때마다 PHP 엔진이 hdd에 메모리를 덤프 할 수 있어야합니다.
- 1. 최대 실행 시간 오류 처리
- 2. 최대 실행 시간 문제
- 3. Condor의 최대 실행 시간
- 4. 런타임에서 최대 실행 시간 감지
- 5. 메일의 최대 실행 시간 제한을 막는 PHP
- 6. PHP 스크립트 테스트 최대 실행 시간
- 7. PHP에서 최대 실행 시간 오류를 수정하려면 어떻게합니까?
- 8. SQL 에이전트 : 최대 실행 시간 설정
- 9. 치명적인 오류 : 최대 실행 시간 0 초 초과
- 10. php 5.2.12 include()를 사용할 때 최대 실행 시간
- 11. 플렉스에서 스크립트 최대 실행 시간 비활성화?
- 12. 웹 서버에서 Perl 최대 실행 시간
- 13. 파이썬 : 최대 시간 후에 실행 중지
- 14. 최대 속도 다운로드 시간
- 15. log4j에 최대 절전 오류
- 16. PHP 세션의 최대 크기
- 17. PHP - ImageCopyResampled 최대 크기
- 18. 최대 절전 모드에서 DDL 실행
- 19. 최대
- 20. PHP imagick annotate setFont가 최대 실행 시간을 초과합니다.
- 21. PHP 실행 시간 제한을 피하십시오
- 22. 창 최대 최대 값
- 23. PHP 파일 업로드시 최대 파일 크기, 세션 시간 및 최대 크기를 변경 한 후
- 24. 최대
- 25. 최대 절전 모드 세션 오류
- 26. 최대 절전 모드 오류 메시지
- 27. 최대 절전 모드 오류 주석
- 28. 최대 절전 모드 시작 오류
- 29. 심포니 최대 허용은 크기 오류
- 30. PHP 코드 최적화 (최대/최대/대/소문자 구분)
그냥 나를 이길 -이 줄을 따라 내 대답을 다시 작성했습니다 –
;) 멋지 네요, 대답은 정확합니다 – shfx
고마워요! 그것은 트릭을했다. – AdamA