在PHP中,如果我通过ini_set
设置内存100M,然后设置set_time_limit(0);
这是否意味着我的PHP内存分配永远是100M(直到我重新启动Apache)?
答案 0 :(得分: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;
}