Symfony - обрабатывать большое количество вставленных данных - PullRequest
0 голосов
/ 03 октября 2019

Я экспортировал файл xlsx, и у меня есть часть кода, в которую я вставляю эти данные в базу данных.

У меня более 5000 записей, и я всегда выхожу из-за ошибки. Я не знаю что делать. Мой пример ниже.

Мой код:

{
        $batchSize = 500;
        for ($i = 1; $i <= 10000; ++$i) {

                $user = new User();
                $user->setEmail($userData['email']);
                $user->setUsername($userData['email']);
                $user->setPassword('plainpassword');


            if (($i % $batchSize) === 0) {

            $this->em->flush();
            $this->em->clear();

            }
        }

    $this->em->flush();
    $this->em->clear();

   return $userData;

}

1 Ответ

0 голосов
/ 03 октября 2019

Прежде всего, эта операция должна быть внутри команды Symfony. Затем вы можете сделать так:

     for ($i = 1; $i <= 10000; ++$i) {
          $user = new User();
          $user->setEmail($userData['email']);
          $user->setUsername($userData['email']);
          $user->setPassword('plainpassword');
        }
    // Do the flush only in the end of everything, that will save memory
    $this->em->flush();

Например, у вас есть эта команда как populate-user. Затем вы можете вызвать его внутри своего PHP-кода с помощью функции exec() и установить вывод на /dev/null

, что заставит код выполняться в фоновом режиме, пока не будет выполнено

Доказательство: enter image description here

Выход: enter image description here

...