Я обновляю свое приложение с 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.