댓글 검색 목록

[php] PHP에서 실행 시간 제한을 설정하는 방법

페이지 정보

작성자 운영자 작성일 20-04-18 12:31 조회 1,375 댓글 0

시간 보호 


PHP에서 실행 시간 제한을 설정하는 방법에 대한 자습서에 오신 것을 환영합니다. 따라서 엄청난 양의 데이터 크 런칭 스크립트를 실행하는 동안 스크립트 시간 초과 오류가 발생합니까? 

글쎄, 그것은 실제로 스크립트가 너무 오랫동안 시스템 리소스를 사용하지 못하게 하는 기본 PHP 보호 메커니즘입니다. 간단히 말해서, PHP에서 시간 제한을 늘리는 4 가지 방법이 있습니다 :

  • php.ini에서“max_execution_time = SECONDS”지시문을 변경하십시오.
  • .htaccess 파일에 새로운“php_value max_execution_time = SECONDS”지시문을 추가하십시오.
  • “set_time_limit (SECONDS)”기능을 사용하여 PHP 스크립트에서 시간 제한을 변경하십시오.
  • 마지막으로“ini_set (“max_execution_time”, SECONDS)”기능을 사용할 수도 있습니다.

이 가이드에서는 이 시간 제한을 늘리거나 제거하는 방법과 그 중 일부가 왜 최상의 솔루션이 아닌지에 대한 몇 가지 예를 살펴 보겠습니다. 알아 보려면 계속 읽으십시오!


기본 


시간 제한을 늘리고 설정하는 방법으로 들어가기 전에 – PHP 시간 제한에 관한 내용과 이를 비활성화 하는 것이 좋지 않은 이유는 다음과 같습니다.


PHP 시간 제한이란 무엇입니까? 


소개에서와 같이, PHP 시간 제한은 스크립트가 시스템 리소스를 너무 오래 사용하지 못하도록 설정되어 있습니다. 기본적으로 최대 실행 시간은 30 초로 설정되어 있습니다. 스크립트가 그보다 오래 실행되면 PHP는 스크립트를 중지하고 시간 초과 오류를 발생 시킵니다.


좋은 소식은 언제든지 변경할 수 있는 한계입니다. 명령 줄 (CLI)에서 PHP 스크립트를 실행할 때는 이 제한이 적용되지 않습니다. CLI (명령 줄) 스크립트에는 기본적으로 시간 제한이 설정되어 있지 않습니다.


시간 제한이 나쁜 이유는 무엇입니까? 


시간 제한을 조금 더 늘리려면 정상적인 서버 작동에 해를 끼치지 않으면 계속 진행하십시오. 그러나 시간 제한이 있다는 아이디어는 안전 메커니즘입니다. 수백 명의 사용자가 몇 시간 동안 스크립트를 실행하기 위해 서버를 망치는 것을 상상할 수 있습니까? 서버가 충돌하거나 크롤링 속도가 느려질 것입니다.


따라서 사용자를 위해 방대한 양의 데이터를 처리하기 위해 서버를 여는 경우 더 강력한 솔루션을 사용하여 서버를 제어하는 ​​것이 좋습니다. I.E. 이 "lazy set time limit"대신 명령 행에서 백그라운드 스크립트로 실행되도록 방대한 스크립트를 설정하고 한 번에 하나씩만 허용하십시오. 아래의 추가 섹션에서 이 작업을 수행하는 방법에 대한 다른 가이드의 링크를 남겨 두겠습니다.


시간 제한 설정 방법 


장기 실행 스크립트를 허용 할 때 발생할 수 있는 잠재적 위험에 대해 알고 있으므로 PHP에서 시간 제한을 변경하는 방법은 다음과 같습니다. 신중하게 고려한 후에 만 ​​수행하고 시간 제한을 조금만 늘리십시오.


1) PHP.INI 편집 


; Maximum execution time of each script, in seconds ; http://php.net/max-execution-time ; Note: This directive is hardcoded to 0 for the CLI SAPI max_execution_time=180 


php.ini 파일에 액세스 할 수 있는 경우, max_execution_time 명령을 변경할 수 있습니다. 그러나 이것은 다른 모든 PHP 스크립트에 영향을 미칩니다. 당신이 하고 있는 일을 정말로 알지 못한다면 나는 그렇게 하지 않는 것이 좋습니다.


2) HTACCESS의 변화 


php_value max_execution_time 180 


Apache 서버를 실행 중인 경우 프로젝트 폴더에 .htaccess 파일을 만들어 시간 제한을 변경할 수도 있습니다. 그러나 모든 PHP 파일에 영향을 미치지는 않지만 프로젝트 폴더 자체의 모든 PHP 파일에는 여전히 영향을 미칩니다.


3) PHP SET_TIME_LIMIT 


<?php set_time_limit(180); // Time limit in seconds 


이것은 내가 권장하는 방법이며 스크립트 자체에서 시간 제한을 변경하는 것입니다. 이런 식으로 모든“잠재적 손해”는 이 스크립트에만 포함됩니다.


4) PHP INI_SET


<?php ini_set("max_execution_time", 180); 


이 마지막 방법은 set_time_limit의 대안입니다. ini_set()을 사용하면 실제로 런타임 동안 일부 php.ini 설정을 변경할 수 있습니다. 첫 번째 매개 변수는 변경하려는 설정이고 두 번째 매개 변수는 새로운 값입니다.


MORE GOODIES 


그게 모든 방법에 대한 것입니다. 여기에 유용한 추가 정보가 있습니다.


EXTRA) 메모리 제한 설정 


시간 제한 외에도 큰 데이터 집합을 처리 할 때 메모리 제한 문제가 발생할 수 있습니다. 고맙게도 이 소프트 리미트도 비슷한 방식으로 해제 할 수 있습니다.


; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit=128M 


php_value memory_limit 256M 


ini_set('memory_limit','16M'); 



추가) 실행중인 백그라운드 작업 


장기 실행 스크립트를 사용자에게 열어서 백 번 새로 고침을 수행하고 백 스크립트를 실행하고 서버를 중단시키는 것은 좋지 않습니다. 백그라운드에서 스크립트를 올바르게 실행하는 방법은 다음과 같습니다.


링크 및 참조 


CHEAT SHEET 


php-time-limit-small.jpg 



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.