在 php 函数中使用 ini_set('memory_limit')

Using ini_set('memory_limit') in a php function

我有一个特别占用内存的函数,我想(就在该函数 运行 时)增加允许的内存以供其完成。

在 php 函数中使用 ini_set('memory_limit' , '1024M') 是不好的做法吗?一旦函数完成,它会 return 到默认值吗?

我知道它的使用价值很高。这是一个专用服务器,有很多果汁。

示例为:

function run_Cron_Processes() {
    ini_set('memory_limit', '1024M');
    memoryIntensive1();
    memoryIntensive2();
    memoryIntensive3();
    //return to default m limit
}
$oldLimit = ini_get( 'memory_limit' );
ini_set( 'memory_limit', '1024M' );
(...)
ini_set( 'memory_limit', $oldLimit );

但我认为这是不必要的:在脚本执行结束时,内存限制被重置为默认值。

脚本执行后该值将return变为默认值。

您还可以将限制设置为 -1 以告知 PHP 您的脚本可以使用所有必要的内存。

我不会说这是不好的做法,你必须做你必须做的事。如果您需要更多内存,那就是这样做的方法。您可能还需要增加 max_execution_time.

话虽这么说,您可能想检查您的 'memoryIntensive' 功能,并在那里进行优化。

ini_set('memory_limit','-1');

它将根据需要使用内存,不会return任何与内存方面相关的错误或通知。