jenia
Пробую сделать валидации. В зависимости от того что прилетело в то переключаю последовательности группу валидации. Но что то не срабатывает оно ... Вообще не валидируются поля g_recaptcha, $mobile_recaptcha. В чем может быть проблема ? { "email": "ra12ed1388@app.test", "password": "short1111", "username": "usernamrtrtre11", "agree_conditions": true, "mobile": "mobile", "g_recaptcha": "token_fail" } https://gist.github.com/evgeniy123/03adcc2337f1d50a3c2495812724147a
Alexey Mishurovskiy
Всем привет. случайно мне тут понадобилось покопаться в говне под названием Yii.. наткнулся на поведение которое я объяснить не могу. На скрине ниже 1-ая итерация цикла, который открыт в дебаггере
Alexey Mishurovskiy
Alexey Mishurovskiy
Как так то ?
Maksym
Народ, в чем может быть причина ошибки?
Alexander
Народ, в чем может быть причина ошибки?
Не видно неймспейса у класса
Maksym
Maksym
охрана отмена), запустил не через bin/phpunit, a ./vendor/bin/phpunit
Dmitriy
Всем привет! При запросе в БД через доктрину, возвращается прокси объект. Можно ли автоматически смапить этот объект в entity или сделать запрос в котором вернется объект entity?
Vlad
выключить lazy-load?)
Dmitriy
выключить lazy-load?)
спасибо. получилось!
Dmitriy
Всем привет! Посоветуйте, пожалуйста, хорошую библиотеку для маппинга объектов. Что-то типо такого, только для php https://github.com/AutoMapper/AutoMapper
Vlad
https://github.com/mark-gerarts/automapper-plus
Dmitriy
A.D.🈴
Подскажите, есть ли какой-то картографический компонент хороший? В плане, нужно сделать, чтобы человек или фильтром ограничивал область или просто по карте шарился, а если есть для текущей области данные (локации и/или gps треки) их отображать.
Viktor
Всем привет! Ребят, нужна помощь. Всю голову уже сломал. Использую messenger, чтобы делать некоторые действия с загруженными фотками пользователей (сжимать, уменьшать и так далее). В цикле, по каждому полученному файлу вызываю dispatch метод: foreach ($photos as $file) { $file = $this->fileHelper->upload($file, 'BreedPhotos'); $this->bus->dispatch(new PhotoUploadMessage($file)); $photo = new BreedCatalogPhoto(); $photo->setIsMain(false) ->setPhoto($file) ->setBreedCatalog($catalog); $this->em->persist($photo); } $file - это File Entity. Так вот почему-то consumer получает только ОДНО сообщение, хотя в цикле 3 фотки, и все три фотки успешно были загружены на сервер (я проверял это тоже).
Юра
Очередь асинхронная?
Юра
Консюмер не делает дай или чего-то такого?
Viktor
Очередь асинхронная?
Да, асинхронная
Viktor
Консюмер не делает дай или чего-то такого?
Нет. Просто выполняет действия с фотками.
Юра
Ну а в очереди создаются месаджи ?
Юра
Что там у тебя БД рэбит или что
Юра
В ребите можно посмотреть что там в очереди висит
Viktor
Не висят:( И в consumer логах видно, что только один message пришёл
Денис
Товарищи, а в симфони есть что-то подобное? Не могу найти как такое сделать
Maks
такое дешевде на ноду переписать
Денис
такое дешевде на ноду переписать
То есть пока нет возможности получать какие-то колбэки от асинхронных задач?
Alexey Mishurovskiy
То есть пока нет возможности получать какие-то колбэки от асинхронных задач?
Ну в консюмере асинхронной задачи можно поднимать Event
Alexey Mishurovskiy
если это, например rabbit
Alexey Mishurovskiy
вообще в симфони есть компонеет messanger может он сможет частично выполнять твои задачи
Юра
В мессенджере нет батчей
Юра
Надо.самому шаманить
Юра
Тикет даже видел по этому поводу
Юра
Я правда не знаю где может понадобиться обрабатывать сразу несколько сообщений в одном воркере
Денис
Самое простое - для отчета о процессе выполнения задач. В целом весьма полезная была бы фигня, когда нужно запускать много параллельных задач
Денис
А вообще была задача отправить параллельно запросы в несколько сервисов и вернуть пользователю результат от того, который ответит быстрее. И я плохо представляю, как вообще такое можно сделать
Alexander
Есть https://amphp.org/ но я бы смотрел в сторону ноды/голенга
Денис
Есть https://amphp.org/ но я бы смотрел в сторону ноды/голенга
Посмотрю, спасибо. Тут для меня самый непонятный момент, как пользователю отвечать. Ведь если я запущу несколько процессов асинхронно, php ж не будет ждать ответа от них. Что логично, на то они и асинхронные. И продолжит выполнение дальше. Как вернуть ответ? Через сокеты возвращать - награмождение на пустом месте и уродство. Ну не слипать же в цикле и не ждать ответа?
Юра
Юра
В guzzle есть асинхронные запросы
Юра
В голову пришла идея одним воркером получать сообщения, батчить их, и пересылать в другую очередь
Юра
А другой воркер получит сообщения в котором будет несколько урлов, сделает параллельно запросы
Юра
Первый воркер просто получает сообщение, сохраняет урл в память и возвращает true. Когда урлы заполнены, делает dispatch в другую очередь
Юра
Правда если первый воркер упадет есть риск потерять сообщения
Юра
Можно попробовать написать деструктор и в нем куда-то складывать урлы которые были в памяти
Alexander
Посмотрю, спасибо. Тут для меня самый непонятный момент, как пользователю отвечать. Ведь если я запущу несколько процессов асинхронно, php ж не будет ждать ответа от них. Что логично, на то они и асинхронные. И продолжит выполнение дальше. Как вернуть ответ? Через сокеты возвращать - награмождение на пустом месте и уродство. Ну не слипать же в цикле и не ждать ответа?
Я не зря начал с ноды :) Подобные задачи возникают достаточно часто, например при поиске авибилетов. Самое простое решение - сделать на ноде один ендпоинт, который будет либо сам всю работу делать, либо дергать 5 пхп-ендпоинтов, что-то там делать со всеми пятью ответами, а потом выдавать клиенту свой ответ. Вторым по простоте будет голенг с такой же реализацией. Самое непростое решение - пытаться решить асинхронную задачу с синхронным инструментом - пхп.
Alexander
А для go нужно что-то своё писать для подобных задач?
Логику, библиотеки на все случаи жизни в наличии.
Alexander
Го не просто асинхронный, он многопоточный, если релевантного опыта нет, можно отстрелить себе не только ногу.
Денис
horse , спасибо, подумаю, может выйдет что-то такое.
Денис
Потому приходится изгаляться. Ну или придется учить Go
Alexander
Получается что у вас и опыта с асинхронным пхп нет. Так что сомнительный аргумент :) Решать вам конечно, я только своим опытом поделиться могу.
Денис
Получается что у вас и опыта с асинхронным пхп нет. Так что сомнительный аргумент :) Решать вам конечно, я только своим опытом поделиться могу.
ну, если это можно назвать опытом асинхронной работы, меня всегда устраивал просто ребит. Но вот такие колбеки ранее не требовались
Юра
Судя по тому что тебе нужно отдать ответ клиенту, тебе не нужен ребит
Юра
Просто сделал газлом несколько запросов, подождал промисы отдал ответ
Юра
Главное чтобы таймаут нгинкса не сработал
Юра
Если нужно более надежно, тогда да ребит, воркеры и апи для создания задания и получения статуса задания
Юра
Есть еще лайфхаки с https://www.php.net/manual/ru/function.fastcgi-finish-request.php
Денис
Просто сделал газлом несколько запросов, подождал промисы отдал ответ
Так ведь встроенных промисов в пхп нет же, насколько я знаю. Это Нужно как раз что-то вроде amphp для них использовать?
Юра
Втроенных нет, есть PSR промисов и их реализации
Денис
Денис
И я верно понимаю, что в той же ноде я могу вызвать обычный синхронный метод, который сможет вызвать несколько уже асинхронных методов, дождаться от них ответа и вернуть результат? И все это без танцев и плясок?
Юра
В ноде любой метод помеченный как async возвращает промис, а ключевое слово await приостанавливает выполнение текущий функции пока промис который стоит после await не выполнится
Юра
Ты можешь написать например await Promise.resolve(123)
Юра
Или await Promise.all(arrayOfPromises)
Денис
О, ну вот это то что надо. Наверное, действительно проще разобраться и ноду поставить. Всем огромное спасибо за помощь!
Alexander
Юра
Там других приколов хватает. Это же всё-таки джаваскрипт )
Magzhan
Приветствую
Magzhan
Почему этот запрос {"amount":"12000","created":"2021-05-02 4:11:44","customer":5, "payment":"1", "type":"2"} И этот {"amount":"12000","created":"2021-05-02 4:11:44","customer":5, "type":"2", "payment":"1"} Не одно и тоже в апи платформ при отправке пост В одном payment=null, а в другом нормальна выводит?
Юра
Апи платформ нужно ставить сразу с xdebug и дебажить
Юра
Там куча всего под капотом
Denis
В проекте используется sonata media-bundle. Требуется сменить тип поля (INT - > BIGINT ) колонки size в media__media. Аннотации в entity не помогают. Судя по всему надо BaseMedia.orm.xml переопределить. Но как? Или как ещё поступить?
Юра
Можно сделать форк бандла