X

Запуск Yii2 из консоли и ошибка Allowed memory size of xxx bytes exhausted

Сегодня при запуске команды yii из консоли получил сообщение о том, что скрипту не хватает памяти. Само большое потребление памяти данной командой не стало для меня новостью, т.к. внутри выполнялось чтение и обработка большого файла. Т.е. нужно было на время выполнения скрипта, просто увеличить лимит..

Если Вы откроете файл ./yii с помощью которого стартуют консольные контроллеры в Yii, Вы обнаружете что это обычный php скрипт, с той лишь разницей, что он сделан исполняемым и в нем прописан путь  к PHP интерпретатору. Раз это обычный php скрипт, то мы можем его запускать не только таким образом

./yii controller/action <params>

а так же как и обычный не исполняемый php скрипт

php ./yii controller/action <params>

а раз мы можем указать транслятор (т.е. команду php), то можем и указать ему параметры, например, для того чтобы увеличить лимит памяти, делается это вот так

php -d memory_limit=512M ./yii controller/action <params>

После того, как я увеличил лимит до 1G файл успешно обработался

Категории: Yii