Allowed memory size of {} bytes exhausted при чтении списка файлов

175
24 июля 2018, 07:40

Есть список sql файликов, которые необходимо загрузить в базу. Пользуюсь yii2 и его миграциями.

В папке лежит 10-15 файлов каждый по 6-9 Мб.

Бегу по ним и выполняю каждый друг за другом.

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

Я предполагаю, что после чтения очередного файлика память не чистится, но могу ошибаться. Прошу помочь.

Вот скрипт:

class m180619_114125_fill_base extends Migration
{
    protected $filesDir = '/dumps/data/';
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        $filesDir = Yii::getAlias('@console'.$this->filesDir);
        $globMask = $filesDir.'*.sql';
        $files = glob($globMask);
        if (!$files) {
            echo "Файлы для импорта базы не найдены\n";
            return false;
        }
        foreach ($files as $filePath) {
            $this->importFile($filePath);
        }
        return true;
    }
    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
        return false;
    }
    /* HELPERS */
    protected function importFile($filePath)
    {
        $file = fopen($filePath, "r");
        $this->execute(fread($file, filesize($filePath)));
        fclose($file);
    }
}
Answer 1
class m180619_114125_fill_base extends Migration
{
    protected $filesDir = '/dumps/data/';
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        $filesDir = Yii::getAlias('@console'.$this->filesDir);
        $globMask = $filesDir.'*.sql';
        $files = glob($globMask);
        if (!$files) {
            echo "Файлы для импорта базы не найдены\n";
            return false;
        }
        foreach ($files as $filePath) {
            $this->importFile($filePath);
        }
        return true;
    }
    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
        return false;
    }
    /* HELPERS */
    protected function importFile($filePath)
    {
        $file = fopen($filePath, "r");
        $this->execute(fread($file, filesize($filePath)));
        fclose($file);
        unset($file);
    }
}
READ ALSO
Передача массива в Highcharts

Передача массива в Highcharts

Передаю данные массива, но к каждому значению добавляются кавычки, в связи с чем график не отписываетсяЕсли передаю просто переменную, тоже...

170
Как подключить bootstrap в laravel

Как подключить bootstrap в laravel

Ранее я всегда подключал bootstrap онлайн, но теперь мне надо чтобы bootsrap был в самом laravel (версия 54), и была возможность его подключить

1431
Регулярные выражения с ограничением

Регулярные выражения с ограничением

Работаю в PHPНужно заменить все ссылки, в которых присутствует расширение jpg, png и т

223
Перенос функций из JS в PHP

Перенос функций из JS в PHP

Есть функции, написанные на JS:

193