PHP 개발에서 ini_set ( 'max_execution_time', 0)은 스크립트 실행 시간을 설정하는 데 사용되는 일반적인 명령입니다. 그 목적은 시간 제한없이 스크립트를 실행할 수있게하고 일반적으로 데이터 가져 오기, 대규모 데이터 처리 등과 같은 장기 실행 작업을 수행하는 데 사용됩니다. 그러나 많은 개발자는이 문제에 직면 할 것입니다. INI_SET ( 'max_execution_time', 0) 이 스크립트에서 스크립트의 무한 실행 시간을 설정하는 데 사용 되더라도 여전히 오류가 발생합니다. 왜 이런 일이 발생합니까?
먼저 Max_Execution_time 의 역할을 이해해야합니다. 이 구성 항목은 PHP 스크립트의 최대 실행 시간 (단위 : 초)을 설정하는 데 사용됩니다. 기본적으로 PHP는 스크립트의 최대 실행 시간을 제한하여 무제한 실행으로 인해 지나치게 소비되거나 충돌하는 서버 리소스를 피합니다. 스크립트 가이 시간 제한을 초과하면 시간 초과 오류가 발생하고 실행이 중지됩니다.
예를 들어, ini_set ( 'max_execution_time', 0)은 최대 실행 시간을 0으로 설정합니다. 즉, 스크립트에 시간 제한이없고 무기한 실행될 수 있습니다.
INI_SET ( 'max_Execution_time', 0) 에서는 이론적으로 PHP 스크립트를 무제한으로 실행할 수 있도록해야하지만 경우에 따라 적용되지 않을 수 있습니다. 몇 가지 일반적인 이유는 다음과 같습니다.
Apache 또는 Nginx와 같은 많은 웹 서버도 구성 파일에서 시간 초과 한도를 설정합니다. Apache의 경우 일반적으로 시간 초과 지침이며 Nginx에는 proxy_read_timeout , fastcgi_read_timeout 등과 같은 설정이 있습니다. 이러한 서버 레벨 타임 아웃 설정이 PHP의 Max_Execution_Time 보다 엄격한 경우 PHP 구성은 적용되지 않습니다. 따라서 PHP가 무제한 실행 시간을 설정하더라도 웹 서버 타임 아웃 한도는 여전히 스크립트 중단을 유발합니다.
해결 방법 : 웹 서버의 구성을 확인하여 시간 초과가 충분히 길어 지거나 타임 아웃 제한을 비활성화하는지 확인하십시오.
명령 줄 인터페이스 (CLI)에서 PHP 스크립트를 실행하는 경우, CLI의 시간 초과 한계는 일반적으로 웹 환경만큼 엄격하지 않기 때문에 ini_set ( 'max_execution_time', 0)은 일반적으로 적용됩니다. 그러나 웹 환경에서 Max_Execution_time 설정은 웹 서버 구성의 영향을받을 수 있습니다.
해결 방법 : 웹 환경에서 테스트하고 서버 타임 아웃 설정을 비활성화 할 수없는 경우 스크립트를 명령 줄 환경으로 이동하여 실행하거나 서버 설정을 조정해보십시오.
일부 PHP 실행 모드 (예 : FPM 모드)마다 구성 동작이 다를 수 있습니다. 경우에 따라 FPM에 자체 시간 초과 구성이있을 수 있으므로 Max_Execution_time 설정은 예상대로 작동하지 않을 수 있습니다. PHP 내에서 실행 시간 설정에서 스크립트가 무제한이더라도 FPM 또는 FASTCGI의 시간 초과 설정은 PHP 요청의 최대 실행 시간을 제한 할 수 있습니다.
해결 방법 : PHP-FPM 또는 FASTCGI의 구성 파일을 확인하여 시간 제한이 없거나 시간 초과 제한이 더 설정되어 있는지 확인하십시오.
PHP의 set_time_limit () 함수는 스크립트의 최대 실행 시간을 제어하는 함수이기도합니다. ini_set ( 'max_execution_time', 0) 과 유사하게 스크립트의 실행 시간을 설정하는 데 사용됩니다. 그러나 set_time_limit ()는 동적으로 활성화되어 있으며 실행 될 때마다 스크립트의 최대 실행 시간을 재설정합니다. set_time_limit () 호출이 스크립트에 존재하면 ini_set 으로 설정 한 max_execution_time을 덮어 쓸 수 있습니다.
솔루션 : Code에서 Set_Time_limit () 함수가 호출되어 Max_Execution_time 의 설정에 영향을 미치지 않는지 확인하십시오.
ini_set ()을 사용하여 스크립트에서 max_execution_time을 설정하는 것 외에도이 값이 Php의 php.ini 구성 파일에서 설정되었으며 값이 변경되지 않도록 설정할 가능성이 있습니다. 일부 공유 호스팅 또는 제한된 서버 환경에서는 php.ini 파일의 max_execution_time이 고정 값으로 설정되었을 수 있으며 일반적으로 iti_set () 에 의해 값을 수정할 수 없습니다.
해결 방법 : 가능하면 php.ini 파일에서 max_execution_time 구성 항목을 확인하고 수정하거나 서버 관리자에게 문의 하여이 설정을 조정하십시오.
일부 PHP 프레임 워크 또는 타사 코드베이스는 실행 시간에 추가 제한 이 있을 수 있습니다. 이 경우 코드에서 max_execution_time을 설정하더라도 프레임 워크 또는 라이브러리 가이 설정을 무시할 수 있습니다.
해결 방법 : 실행 시간 제한이 있는지 확인하기 위해 사용중인 프레임 워크 또는 라이브러리의 문서를 확인하고 이러한 제한을 적절하게 조정하거나 우회하십시오.
ini_set ( 'max_execution_time', 0)을 사용하면 PHP 스크립트를 제한없이 실행할 수 있지만 경우에 따라 유효하지 않을 수 있습니다. 일반적인 이유에는 웹 서버의 구성 제한, PHP의 작동 모드, 다른 기능과의 간섭, PHP 구성 파일의 제한 및 사용 된 프레임 워크 또는 라이브러리의 제한이 포함됩니다. 이 문제는 일반적으로 이러한 요소를 조사하고 조정하여 해결할 수 있습니다.