2012-09-16 2 views
0

PHP에서 을 통해 메모리 100M을 설정 한 다음 set_time_limit(0);을 설정하면 내 Apache를 다시 시작할 때까지 PHP 메모리 할당이 100M이된다는 뜻입니까?메모리를 높게 설정 한 다음 set_time_limit을 0으로 설정하십시오.

+0

위해서는 ini_set는 PHP를 구성 변수를 설정하는 기능입니다, 당신은 어떤 구성 변수 것은 당신이 100M로 설정되어 우리에게 얘기를해야합니다. – Nelson

답변

1

스크립트 실행이 끝날 때 원본으로 다시 설정되지 않습니다.

From the manual:

문자열 위해서는 ini_set (문자열 $ varname에, 문자열 $ NEWVALUE는)

지정된 구성 옵션 값을 설정합니다. 구성 옵션은 스크립트가 실행되는 동안이 새 값을 유지하며 은 스크립트의 끝에서 복원됩니다.

set_time_limit(0);은 동일하게 취급된다.

예 :

set_time_limit(0);
// 1. Script starts 
echo ini_get('memory_limit');//128M 

// 2. We set a new limit the script will now have 100M 
ini_set('memory_limit','100M'); 
echo ini_get('memory_limit'); //100M 

die; 
// 3. Script ends now its set back to 128M 

그냥 시간이 초과하지 않도록 스크립트를 알려주는 상점이 각이 내부 카운터가 반복 0으로 설정되어 반복에서 다음 루프 내 set_time_limit(0);를 사용했다 말한다.

루프의 각 반복이 1 초 이상 지속되지 않는 한 루프 내에서 set_time_limit(1);을 사용한다면 set_time_limit(n);은 각 반복마다 내부 시간 초과 카운터를 0으로 재설정하므로 시간 초과가되지 않습니다. 그것의

예 1 초 후 시간 초과하지 :

for($i=0;$i<=10;$i++){ 
    set_time_limit(1); 
    usleep(999998); //2micro seconds from a second 
    echo $i; 
} 
+0

매우 흥미 롭습니다. 어떻게 든 내 로컬 호스트는 다음 스크립트 실행을 위해 100M을 유지하며 매번 스크립트가 마지막 증가분의 맨 위에 100M을 늘립니다. – doNotCheckMyBlog

관련 문제