PHPでメモリを100Mini_set
に設定してから設定した場合set_time_limit(0);
、PHPのメモリ割り当ては永久に100Mになるということですか(Apacheを再起動するまで)?
質問する
1131 次
1 に答える
1
スクリプト実行の終了時に元にリセットされることはありません。
string ini_set(string $ varname、string $ newvalue)
指定された構成オプションの値を設定します。構成オプションは、スクリプトの実行中にこの新しい値を保持し、スクリプトの終了時に復元されます。
と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
set_time_limit(0);
スクリプトにタイムアウトしないように指示するだけで、ループ内で使用することになっていると言うと、set_time_limit(0);
各反復でその内部カウンターが何度も0に設定されます。
したがってset_time_limit(1);
、ループの各反復が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;
}
于 2012-09-16T23:52:24.740 に答える