Как стать автором
Обновить
1
0
Дмитрий @iyzoer

Web-разработчик

Отправить сообщение

Чем плохи демоны на PHP?

Задним умом все крепки

Так то да, но у автора есть уж совсем спорные решения. Например с кодировкой, можно было бы все таки и погуглить, прежде чем менять.

Кому-то нравится что в jms легко некоторые штуки делать через аннотации. Например, можно задать формат даты при сериализации, в симфонийном сериалайзере такого простого способа из коробки нет.
В таком случае да, согласен. Но опять же, не стоит заставлять инструмент выполнять то, для чего он не предназначен.
class CustomValueResolver implements ArgumentValueResolverInterface
{
    private $serializer;
    private $validator;

    public function __construct(
        Serializer $serializer,
        ValidatorInterface $validator
    ) {
        $this->serializer = $serializer;
        $this->validator = $validator;
    }

    public function supports(Request $request, ArgumentMetadata $argument): bool
    {
        // определяете должен ли резолвится аргумент
    }

    public function resolve(Request $request, ArgumentMetadata $argument): Generator
    {
        $dto = $this->serializer->deserialize($request->getContent(), $argument->getType(), 'json');
        $this->validator->validate($dto);

        yield $dto;
    }
}


в метод контроллера передаете объект юзера
public function userAction(User $user)
и не пишете в каждом методе десериализацию.
Чаще всего то, что каждый вызов резолвера независим. И нужно либо делать предварительный парсинг (что в целом сводит на нет всю полезность резолвера, т.к.в этот же момент можно и в реквест заинжектить все что нужно), либо парсить в каждом резолвере (что как бы зачем).

А можете какой-то кейс привести? Проблематику понял, но пока что ощущение, что пытаетесь заставить резолвер делать то, для чего он не предназначен.

По поводу типизированных массивов да, согласен. Но тут проблема за рамки резолверов выходит.
не очень понял, что мешает json парсить?
резолверы тоже сервисы в symfony, можно любой сериалайзер и валидатор прокинуть
@ParamConverter — это фишка SensioFrameworkExtraBundle, а так можно любой кастомный резолвер сделать.
В symfony такие штуки удобно делать через argument value resolver
Формат ocmod — довольно элегантное решение для определения модификаций исходных файлов, причем независимо от их формата.

Сомнительная элегантность, если честно. Это же просто костыль, который придумали как расширение, при том от безысходности, потому что никаких альтернатив платформа не предлагала. А он потом перекочевал во вторую версию CMS.
можно и без этого всего, просто запустить супервизор же
Use a process manager like supervisord. This is a moderately heavy-weight approach that requires you to package supervisord and its configuration in your image (or base your image on one that includes supervisord), along with the different applications it manages. Then you start supervisord, which manages your processes for you. Here is an example Dockerfile using this approach, that assumes the pre-written supervisord.conf, my_first_process, and my_second_process files all exist in the same directory as your Dockerfile.

FROM ubuntu:latest
RUN apt-get update && apt-get install -y supervisor
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY my_first_process my_first_process
COPY my_second_process my_second_process
CMD ["/usr/bin/supervisord"]
в приведенном скрипте, если появляется временно-постоянная проблема (например отвалился какой-нибудь сервис или очередь), то один из процессов будет постоянно умирать, а с ним — и весь супервизор

не очень понял, почему весь супервизор умирать будет, умирать будет только косячный процесс
В документации докера есть даже пример по запуску супервизора: docs.docker.com/config/containers/multi-service_container
Какие тут могут быть подводные камни?
Просто если представить ситуацию, что есть условно 5 очередей, на каждую хочется 3 воркера запустить, это тогда нужно 15 контейнеров поднять?

Информация

В рейтинге
Не участвует
Откуда
Ростов-на-Дону, Ростовская обл., Россия
Дата рождения
Зарегистрирован
Активность