Kirill
так что туда может влезть что-то ещё
Kirill
если это код воркера, конечно
Kirill
если транспорт мускул, то выполняют ) косяк симфы
ну вот получение первой доступной записи с блокировкой - не даст никому захватить её
Kirill
хотя хз, есть ли такое в мускуле
The Ant
есть
Павел
Ну если идти в сторону локов, то можно локи и не за счет БД ставить
Павел
Ну точнее не лока строк
Kirill
ну вот и получеается SELECT * FROM tasks WHERE status <> completed ORDER BY created_at COUNT 1 FOR UPDATE SKIP LOCKED;
Kirill
Ну если идти в сторону локов, то можно локи и не за счет БД ставить
за счёт БД надёжнее, атомарный селект же с блокировкой на то, чтобы никто другой не захватил
Павел
Но так или иначе мы решаем другую проблему)))
Павел
Т.е. тот же лок Муравью не поможет, этот лок решает проблемы одновременного выполннения задач и отхода от статуса proccessed
Kirill
Т.е. тот же лок Муравью не поможет, этот лок решает проблемы одновременного выполннения задач и отхода от статуса proccessed
так меня спросили чем я против статусов "поставлено в очередь" и "в обработке")))
Kirill
я ответил
The Ant
да это тоже говно решение, как по мне. Длинные транзакции это лишние дедлоки, которые надо хендлить. закрытие транзакции не на том же экране это адский дебаг будет.
Павел
Можно сказать именно под этот процесс
Павел
Если это будет стандартный год энтити обжект, то какие нить паралельные процессы встанут
Павел
Так что соглашусь, что есть свои риски
The Ant
чем длиннее транзакция, тем больше вероятность поджечь себе же задницу
Kirill
так а что тебе мешает делать отдельный коннект на фетч таблицы задач
Kirill
только вид сбоку
Павел
Просто попахивает))
Kirill
хз, как раз нормально всё
Павел
Опять же я может не совсем понял про коннект, как отдельный коннект поможет? Или речь про отдельную базу, таблицу?
The Ant
чет в дебри полезли )
Kirill
так что все операции в рамках этой транзакции будут туда же улетать (в эту же транзакцию)
Kirill
поэтому чтоб держать транзакцию с локом задачи и работать в это время в другой транзакции без блокировок и используется отдельное соединение
Павел
лок фор апдейт должен находиться внутри транзакции
Так я не про синхронную работу, а что если мы залочим строку, то пользователь не сможет в ней что то поменять в совершенно другом флоу, в другом эндпоинте.
Павел
Где данные не только про обработку
Павел
The Ant
крч писать разные команды для разных процессов (залив, перезалив), и подписываться на ивенты Ладна, спасибо. Мб иссуйку закинуть про промисы? 😄
The Ant
как же не хочется строить бл вокруг мессенжера сраного
Сергей
можно еще в saveToStorage напрямую колбэк передать..но тоже такое себе
Павел
Т.е. передавать в асинхрон $command->commands[] = new Command1() $command->commands[] = new Command2() И в хэндлере их синхронно выполнять через тот же мессенджер
The Ant
По крайней мере решает задачу написать код на том же экране
Алексей
Доброго дня, подскажите пожалуйста, мне нужно инициировать объект параметрами для запроса, послать его(допустим через газл). хочу всё это дело сделать сервисом, и в контроллере вызывать только пару методов сервиса. вопрос в том, что как мне получить объект с конфигурацией в сервисе ? если правильно понял, то нужно создать отдельно фабрику-сервис, и её результат прокинуть в мой сервис. Рассуждения и метод правильные или можно лучше/проще ?
Алексей
Какой имеено конфигурацией?
параметры тела запроса , на основании их, мне в ответе будет генерироваться нужная ссылка на внешнем сервисе в контроллере хочу что то вроде $service->getGenerateUrl в итоге вызвать
Юра
Вопрос как передать конфигурацию в этот $service ?
Юра
А симфони свежая?
Юра
Если свежая то можно например просто заинджектить в конструктор https://symfony.com/blog/new-in-symfony-6-1-service-autowiring-attributes
Юра
Можно заинжектить ParamaterBagInterface
Юра
и получать от туда параметры в конструкторе
Юра
Либо вручную описать сервис с аргументами
Юра
просто в services.yml services: Some\Service: arguments: [.....]
Алексей
Юра
Так лучше потому что параметер баг сложнее тестировать и неявно что там нужно
Юра
Если сложная конфигурция то либо factory, либо service configurators
Vlad
Можно заинжектить ParamaterBagInterface
а это опасно использовать
Vlad
Чем ?
https://t.me/symfony_ru/70377
Алексей
Если сложная конфигурция то либо factory, либо service configurators
Сразу думал через фабрику, но пока параметры статичны и один раз в конфиге пропишутся и всё
Vlad
то есть до рантайма не узнаешь есть ли этот параметр или нет
Юра
Напомню что можно определить сервис отдельно для какого энва через when@dev, если например параметры разные и не хочется через parameters:
Юра
Только не помню есть ли это в 5
Юра
Мне кажется js уже вышел из под контроля
Юра
Это не нормально когда 16гиг памяти на ноуте не хватает чтобы запустить ide и сбилдить фронт )
Vlad
Это не нормально когда 16гиг памяти на ноуте не хватает чтобы запустить ide и сбилдить фронт )
Таковы реалии, у меня на проекте через композер не поставишь пакет если все не выключишь имея 16гиг)))
Юра
Да реально 16 гиг уже не хватает
Dmitriy
хз чо у вас там пооткрыто, мне 16гигов на бубунте заглаза хватает
Павел
Поидее утечка композера давно решена. На сам пых вроде хватает. А вот на проект в целом может и не хватать. Всякие эластики, воркеров куча.
Юра
Да локальный дев энв съедает кучу памяти еще
Юра
Ну не кучу но всего понемногу и получается что 16гиг не хватает