Иван
допустим, у тебя в теле json запроса нет обязательного поля
ты обязан будешь кинуть исключение
Alexander
Пробовал работает лайк э шарм
Спасибо, надо было поднастроить ssh-демона чтобы он с 172.17.0.1 работать начал и, действительно, лайк э шарм 🤝
Иван
The Ant
потом и спрашиваю, нормально ли )
Я вот не считаю ошибки валидации исключительной ситуацией.
The Ant
к томуже на фронте будет проще обработать этот ответ. подсветить чо не так.
Vlad
normalizer и готовишь исключение в нужном формате для фронта)
Иван
ну и на фронте вообще всё равно
даже лучше, если по коду ответа понятно, что не 200
alexandr
У кого-нибудь был опыт обновления проекта с symfony 2.8 php 7.1 до symfony 5.*/php 7.4?
Vlad
c помощью rector сможешь обновить
Vlad
https://github.com/rectorphp/rector
alexandr
Да, смотрел на него, а он нормально зависимости типа сонаты и прочего обновляет?
Alexey
c помощью rector сможешь обновить
Там же последовательно надо как-то обновлять
Я читал пробовал обновлять с 2.8 до 3.4 но далее не смог до 4.3
Главные вещи конечно запустилась но дальше все в 500 уходило т.к. надо код править
Я пробывал обновлять по статье
https://tomasvotruba.com/blog/2019/02/28/how-to-upgrade-symfony-2-8-to-3-4/
Alexey
кто может срочно помочь
symfony2 session_write_close(): Failed to write session data using user defined save handler
сессии хранятся в memcached
php -i | grep session.save_path
session.save_path => /var/lib/php/sessions => /var/lib/php/sessions
на папку права 777
Alexey Mishurovskiy
Всем привет. Кто работал с новой системой authentication в 5.3?
Alexey Mishurovskiy
Как запустить параллельно 2 механизма форма и апи токен?
Alexey Mishurovskiy
В доках как на зло инфа старая
Alexey Mishurovskiy
и тут либо email либо token получается надо настледовать от User ApiUser и там его переопределять
Иван
я не понял, две формы шлются на один роут и сложно узнать, где какая?
Alexey Mishurovskiy
Alexey Mishurovskiy
The Ant
Отдельный аутентификатор для мыла, и отдельный для токена.
если хотяб 1 из них сработает, то аутентифицирует
Alexey Mishurovskiy
ну так в getUserIdentifier может быть что то одно
The Ant
ну так в getUserIdentifier может быть что то одно
в доке и вравду кривовато все написано. Но есть выход.
в UserBadge можно колбек засунуть. Будет чето типа
return new Passport(
new UserBadge($apiToken, function ($userIdentifier) {
return $this->userRepository->findOneBy(['apiToken' => $userIdentifier]);
}),
new CustomCredentials(
function ($credentials, UserInterface $user) {
return $user->getApiToken() === $credentials;
},
$apiToken
)
);
чутка кастыльненько )
Alexey Mishurovskiy
у да, это я видел. вот думаю переделвывать ща или остаться пока на гардах пока они не сделают нормльную доку
The Ant
ну, новое даже так выглядит чище намного, чем старое
Alexey Mishurovskiy
странно что они доку не поменяли
Alexey Mishurovskiy
https://stackoverflow.com/questions/24681613/doctrine-entity-increase-value-download-counter
Вот интересно а как это правильно делать? через запрос то понятно, но если, например делать инкремент из значения, которое находится в сущности в данный момент, то может получиться так, что 2 параллельных запроса попытаются заинкременить. получается самое надежное возложить это на базу данных
Andrey
Иван
Иван
ну а какие вообще ещё представляются варианты?
Andrey
Через мьютекс
Alexey Mishurovskiy
Alexey Mishurovskiy
Alexey Mishurovskiy
Задача такая - есть сущность в которую при API запросе должно писаться кол-во этих запросов.
Andrey
это как ?
https://symfony.com/doc/current/components/lock.html
Andrey
Иван
Andrey
или реалтайм нужен?
Alexey Mishurovskiy
хорошо, если API запросов будет 10 в секунду ? хотя.. я толкьо что подумал, что можно чуть логику изменить и сделать это в другой момент
Иван
Andrey
Andrey
ну и проверяешь что бы (количество в памяти + количество в базе) < количества в тарифе
Alexey Mishurovskiy
а что ты под разумеваешь под держать в памяти ?
Andrey
сессия, мемкэш, редиска, файл....
Alexey Mishurovskiy
флоу такой - получает апи запрос, сохраняем его в БД и кидаем задачу с id в реббит на обработку. в момент обработки надо проверить валидно ли количество уже обработанных запросов в соответствии с тарифом.
Да, редис вариант. но для МВП не хочу нагромождать, т.к. это еще и на админа ляжет, а это лишнее время, которого сейчас нет.
Пока виду вариант после окончания обработки запускать инкремент на стороне БД.
Но опять же это не решит вопрос обработки задач, более чем 1 консюмером.
Andrey
а чего не делать инкремент перед запуском задачи?
Andrey
или чекать выполенные + в процессе
Иван
или даже не инкремент, а реально счёт вести в поинтах
Иван
чтоб были операции по 2-5 поинтов, например
Andrey
инкремент + реальный счёт
Иван
соответственно у пользователя, а не у сущности и будет лимит на операции
Andrey
count() дорогая операция
Alexey Mishurovskiy
ну в принципе меня это скорее все устроит, будет скорее всего +5 примерно обработок от тарифа
Юра
А че нельзя сделать через dql update?
Юра
Зачем все эти мьютексы если на уровне бд и так уже есть внутри мьютексы где надо
Andrey
Бывают ситуации когда через БД такое нельзя или не удобно сделать
Юра
Не знаю что может быть удобнее атомарного инкремента на уровне бд
Юра
Ну можно еще редис поднять там есть атомарный инкркмент но не понимаю особо в чем профит
Юра
В постгре там вообще есть такое понятие как сиквенсы и методы аля nextval()
Юра
Делаешь себе select nextval(sequence) и всё
Andrey
Ну например если ооочень быстро инкрементить - база загнёться, а редиска нет
Юра
Не знаю, но звучит странно
Юра
Чем оно там принципиально отличается. Может там настроено так что редис не флашит на диск каждвйн инкркмент а бд флашит
Andrey
Именно
Andrey
Типа nosql
Юра
Ну есть риск потери счетчика тогда
Andrey
В общем на больших нагрузках там свои правила
Юра
Хотя если настроить репликацию риск минимальный
Andrey
Ну лучше пусть счётчик немного собьёться чем база будет тупить постоянно
Юра
В мускуле есть настройки которые позволяют настроить как часто идет флаш на диск
Юра
Минус правда в том что влияет на всю базу
Юра
Помню я получал существенный выигрыш в скорости в мускуле на запись когда изменял параметр этот