void set_time_limit ( int $seconds )
(PHP 4, PHP 5)

자주 사용하는 함수는 아니지만 꼭 알아야 하는 험수입니다. 이 함수의 역할은 스크립트 최대 실행 시간을 제어하며, 값이 0이면 시간이 무제한입니다.

스크립트가 실행 가능한 시간을 초 단위로 입력합니다. 설정 시간을 초과할경우 스크립트는 치명적인 오류를 일으킵니다. 기본 제한은 30초로 php.ini 에 정의한 max_execution_time값이며, 만약, max_execution_time를 설정할 수 없는 환경이면 ini_set()함수로 제어할 수 있습니다.

<?php
 // php 안전모드에서는 동작하지 않으며,
 // php.ini를 수정할 수 없다면, 
 // max_execution_time 시간을 120초로 늘립니다.
 ini_set('max_execution_time', 120); 
 
 echo ini_get('max_execution_time'); // 결과: 120
 ?>

<?php 
 // php가 안전모드가 아니라면 25초로 늘립니다. 
 if( !ini_get('safe_mode') ){ 
      set_time_limit(25); 
 } 
 ?>

다음은 무한으로 동작합니다. 당연히 서버에 큰 무리가 가겠죠. 그래서 30초 이내 스크립트가 종료되지 않으면, php 오류와 함께 스크립트를 강제로 종료해 버립니다.

<?php
 $i=1; 
 while(true){
      echo "$i <br />\n";
      $i++;
 }
 ?>

그래서 다음과 같이 설정하면 300초가 지나야 스크립트가 종료될 것입니다.

<?php
 $i=1; 
 set_time_limit(300); 
 while(true){
      echo "$i <br />\n";
      $i++;
 }
 ?>

0 댓글