centos()에서 PHP 스크립트를 실행하고 싶은데 /usr/bin/php file.php
실행하는 데 시간이 오래 걸리고 실행 중에 실행이 중지되고 오류가 발생하지 않습니다. 그리고 내 PHP 코드에는 전혀 버그가 없다고 확신합니다(여러 가지 방법으로 테스트했습니다). 실행 시간 문제인 것 같습니다.
내 질문은 다음과 같습니다
- 내 서버에 스크립트 실행을 방해하는 시간 초과 오류가 있을 수 있습니까?
- 그렇다면 서버가 더 오랜 시간 동안 시간 초과 오류를 표시하도록 어떻게 설정할 수 있습니까?
감사해요.
답변1
명령줄이나 쉘 스크립트, cron 작업 등에서 실행되는 PHP 스크립트에는 시간 초과가 없습니다.
CLI에서 PHP를 호출할 때 의도적으로 최대 실행 시간을 설정할 수도 없습니다. 에 전화할 수 있지만 set_time_limit(n)
아무 효과가 없습니다.
예를 들어, max_execution_time이 CLI에 영향을 미치는 경우 다음 스크립트는 "done"을 인쇄해서는 안 되지만 다음을 인쇄합니다.
<?php
set_time_limit(5);
print ini_get('max_execution_time') . "\n";
sleep(10);
print "done.\n";
보고되지 않은 오류가 발생했을 수 있습니다. 전체 오류 보고가 활성화되어 있는지 확인하세요.
error_reporting(E_ALL);
답변2
스크립트에 오류가 없다고 확신하고 명령줄에서 실행 중인 경우 다음을 수행할 수 있습니다.
- 시간 초과에 대한 이론을 테스트해 보세요. 오랫동안 아무 작업도 하지 않는 더미 스크립트(예: 중첩 루프)를 작성해 보세요. 완료되기 전에 중지되나요?
- 코드의 메모리 요구 사항을 분석합니다.https://github.com/arnaud-lb/php-memory-profiler.
- 동일한 스크립트를 실행해 보십시오. 가능성은 낮지만 환경에 문제가 있을 수 있습니다.
오류가 없고 필요한 리소스를 사용할 수 있으면 스크립트를 실행할 수 없는 이유가 없습니다.