检查max_execution_time和memory_limit是否设置为所需值

时间:2018-08-07 04:54:25

标签: php

我有以下php函数

function allocate_resources()
{
    ini_set('max_execution_time',2700); //set maximum execution time of script
    ini_set('memory_limit','1024M'); //set memory_limit for script
}

此函数在很多函数中都被称为分配资源,所以我要检查

如果未将 max_execution_time 设置为 2700 ,则将其设置为 2700

如果未将 memory_limit 设置为 1024M ,则将其设置为 1024M

也欢迎任何更好的解决方案。

2 个答案:

答案 0 :(得分:0)

使用 ini_get()

来自http://php.net/manual/en/function.ini-get.php

  

(PHP 4,PHP 5,PHP 7)

     

获取配置选项的值

例如$max_exec_time = ini_get('max_execution_time');

答案 1 :(得分:0)

使用

$max_time = ini_get("max_execution_time");
$memory_limit = ini_get('memory_limit');

获取max_execution_timememory_limit。然后使用if检查是否设置了这些值(如果不适用的话)。

获取memory_limit

$memory_limit = ini_get('memory_limit');
if (preg_match('/^(\d+)(.)$/', $memory_limit, $matches)) {
    if ($matches[2] == 'M') {
        $memory_limit = $matches[1] * 1024 * 1024; // nnnM -> nnn MB
    } else if ($matches[2] == 'K') {
        $memory_limit = $matches[1] * 1024; // nnnK -> nnn KB
    }
}

应注意的是, ini_set('max_execution_time', 2700);set_time_limit(2700);并非完全同义,因为set_time_limit()将计数器“重置”为0,其中{{1} }不会。