ini set — использование ini_set (‘memory_limit’) в функции php

У меня есть функция с особенно интенсивным использованием памяти, которую я хотел бы (только во время работы этой функции) заполнить разрешенную память для ее завершения.

Это плохая практика для использования ini_set('memory_limit' , '1024M') внутри функции php и после завершения функции вернется ли она к значению по умолчанию?

Я знаю, что это высокая ценность для использования. Это выделенный сервер и много сока.

Примером будет:

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

0

Решение

$oldLimit = ini_get( 'memory_limit' );
ini_set( 'memory_limit', '1024M' );
(...)
ini_set( 'memory_limit', $oldLimit );

Но я думаю, что в этом нет необходимости: в конце выполнения скрипта ограничение памяти сбрасывается до значения по умолчанию.

2

Другие решения

Значение вернется к значению по умолчанию после выполнения вашего скрипта.

Вы также можете установить свой предел в -1 чтобы сообщить PHP, что ваш скрипт может использовать всю необходимую память.

0

Я бы не назвал это плохой практикой, ты должен делать то, что должен делать. Если вам нужно больше памяти, это способ сделать это. Вам также может понадобиться увеличить max_execution_time,

При этом, возможно, вы захотите проверить свои функции memoryIntensive и оптимизировать их там.

0

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

Он будет использовать в соответствии с требованием памяти и не вернет никаких ошибок или уведомлений, связанных со стороной памяти.

0
По вопросам рекламы [email protected]