0

PHPでメモリを100Mini_setに設定してから設定した場合set_time_limit(0);、PHPのメモリ割り当ては永久に100Mになるということですか(Apacheを再起動するまで)?

4

1 に答える 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 に答える