Приложение Symfony 3.4, сталкивающееся с утечкой памяти при выполнении кеша: очистить с разогревом - PullRequest
0 голосов
/ 17 октября 2018

Я обновляю свое приложение с Symfony 2.8 до 3.4, и я использую преимущества новой функции автоматической проводки.

В рамках моего рефакторинга служб для автоматической проводки я перешел из этого в 2.8:

appbundle.services.course_manager:
    class:  AppBundle\Services\CourseManager
    calls:
        - [setDoctrine, ['@doctrine']]

без определения в 3.4 и просто с помощью аннотации @required, например:

class CourseManager
{
   use DoctrineTrait;
}

trait DoctrineTrait
{  
    /**
     * @required
     * @param RegistryInterface $doctrine
     */
    public function setDoctrine(RegistryInterface $doctrine)
    {
        $this->doctrine = $doctrine;
    }
}

Когда я запускаю bin/console cache:clear --env=dev -vvv, я получаю следующее:

// Warming up cache...                                                                                                 

PHP Fatal error:  Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1021054976 bytes) in /private/var/www/crmpicco/symfony/vendor/symfony/symfony/src/Symfony/Component/Config/Resource/ReflectionClassResource.php on line 137

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1021054976 bytes) in /private/var/www/crmpicco/symfony/vendor/symfony/symfony/src/Symfony/Component/Config/Resource/ReflectionClassResource.php on line 137
Fluent\Logger\FluentLogger Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1021054976 bytes) signup.php: {"message":"Fatal Error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1021054976 bytes)","context":{"exception":{}},"level":500,"level_name":"CRITICAL","channel":"php","datetime":{"date":"2018-10-17 08:18:41.313528","timezone_type":3,"timezone":"UTC"},"extra":[]}
08:18:41 CRITICAL  [php] Fatal Error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1021054976 bytes)
[
  "exception" => Symfony\Component\Debug\Exception\OutOfMemoryException {
    #message: "Error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1021054976 bytes)"
    #code: 0
    #file: "/private/var/www/crmpicco/symfony/vendor/symfony/symfony/src/Symfony/Component/Config/Resource/ReflectionClassResource.php"
    #line: 137
    #severity: E_ERROR
  }
]

In ReflectionClassResource.php line 137:

  [Symfony\Component\Debug\Exception\OutOfMemoryException]                                       
  Error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1021054976 bytes)  

Exception trace:

cache:clear [--no-warmup] [--no-optional-warmers] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command>

Тем не менее, когда я запускаю его с --no-warmup, я не сталкиваюсь с утечкой памяти, возможно потому, что приложение не загружается.

В выводе не указано, откуда возникла ошибка, поэтому у меня возникли проблемы сотслеживая его.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...