Size: a a a

2021 August 25

OZ

Oleg Zenkovich in symfony
Запускай тесты в контейнере, а не у себя локально
источник

М

Максим in symfony
В контейнере и запускаются. Использую интерпретатор из докера.
источник

OZ

Oleg Zenkovich in symfony
А в одной сети?)
источник

М

Максим in symfony
Да, кажется что-то всё таки в PHP STORM не так настроил
источник

М

Максим in symfony
Сейчас запустил docker-compose run --rm php-cli php vendor/bin/phpunit --testsuite=functional и прошёл тест
источник

AM

Artem Molotov in symfony
Правильно ли я понимаю, что при запуске мессенджера PHP закеширует опкод и он не будет сброшен при изменении хендлеров?
источник

A

AZA in symfony
Ну да, воркеры надо перезагрузжать при изменении кода
источник

AM

Artem Molotov in symfony
Я почему-то надеялся, что воркер внутри может делать инвалидацию.
источник

A

Anon. in symfony
Он не то что закэширует, а просто процесс со старым кодом останется висеть дальше
Пхп не поддерживает хот релоадинг
источник

AM

Artem Molotov in symfony
Насколько мне было известно, кеш опкодов инвалидируется при изменении файлов. На то и рассчитывал. Но уже нашёл в доке упоминания https://symfony.com/doc/current/messenger.html#deploying-to-production

Удивительно, что я изначально искал и по ключевым словам не нашёл.
источник

AD

Andrey Dembitskyi in symfony
Попробуй продумать, как это работало бы.
Учитывая созданные объекты, что уже находятся в памяти, готовый собранный di контейнер и возможно изменённую логику инициализации.

Как продумаешь - можно будет искать в коде, сделано ли.
источник

AM

Artem Molotov in symfony
Обработка происходит в отдельном процессе. Инвалидацию можно делать между сообщениями. Технически я особых проблем не вижу (но я и не лез в ядро php). А искать можно по функциям инвалидации кеша (использование такого не нашёл)
источник

AD

Andrey Dembitskyi in symfony
Есть класс SmsHandler с описанным конструктором с зависимостью на SmsGateway.
В bus есть в неком массиве соответствие SmsMessage - SmsHandler и closure с логикой создания handler (new SmsHandler($this->get('smsgateway'))).

Сутки вхолостую воркер работал без сообщений, изменили файл SmsHandler, добавив зависимость от Logger и изменили конфиг di.

Можно ли просто инвалидировать опкеш файла SmsHandler и ожидать корректной работы?
источник

AD

Andrey Dembitskyi in symfony
И что есть "обработка в отдельном процессе"?
источник

A

Anon. in symfony
Если вы про опкоды, то да. На дефолтном пхп они обновляются при изменении файла
Зависит от настроек опкэша
Но в проде обычно эту фичу отключают и опкоды не обновляются с изменением файлов
источник

A

Anon. in symfony
Нельзя
источник

R

Rafael in symfony
Всем привет. В общем, есть сущность Entity/Post. Для добавления нового поста в таблице использую такой способ (из документаций):
$entityManager = $this->getDoctrine()->getManager();

$product = new Product();
$product->setName('Keyboard');
$product->setPrice(1999);
$product->setDescription('Ergonomic and stylish!');

$entityManager->persist($product);
$entityManager->flush();

Но, недавно читал то что лучше делать это через сервис. В общем, как правильно это делать?
источник

SG

Sergey Gerasimov in symfony
Правильно и лучше - разные вещи. В обоих случаях будет правильно
источник

QQ

Qwert Qwertinsky in symfony
что бы не было путаницы в терминах - уточните что называете сервисом ?
источник

R

Rafael in symfony
Как я понял, делается сервис например PostManager, которые управляет постами (добавить, изменить...).

В каких случаях лучше применять подобный способ?
источник