Ilya 🃏
Ну хранить статус для каждого сообщения очень ресурсозатратно, учитывая наличие групп и каналов в чате)
Рустам
всем привет. на работе есть проекты, которые в теории можно, нужно и хочется делать на симфони, но есть один нюанс, который пока что останавливает на корню выбор фреймворка (по итогу все я делаю на битриксе, что уже не хочется делать) к примеру, есть контентная страница. в публичной части выглядит вот так
Рустам
в админке это выглядит вот так. на скриншотах описано что можно делать. вопрос: есть ли что-то такое на симфони? или нужно написать раз и навсегда? на симфони как админку я использую easyAdmin
Рустам
грубо говоря, большинство проектов комерческие, где есть новости, статьи, страницы и тд. верстка бывает сложная, хотя бы взять типичный слайдер, к примеру. не все заказчики будут пихать html код слайдера в визуальный редактор, поэтому, чаще всего, приходится делать в админке манипуляции, чтобы все заполнялось легко и интуитивно понятно.
Alexander
Если дизайн/верстка есть то быстрее сделать свой шаблон, роуты тоже не трудно сделать. В Sonata такое можно, в easyadmin не пробовал, так бы скинул ссылку.
Максим
Всем привет. Возможно ли в symfony 4.3 такое, чтобы геттер в entity, в зависимости от группы сериализации, отдавал данные в разных форматах(зависит от группы сериализации)?
Dmitriy
что такое группа сериализации ?
Максим
Вот такая штука в аннотации, которая позволяет настраивать отображение свойств при сериализации entity
artem
Всем привет) а кто-то сдавал zce?
artem
Если да, долго ли готовились? Хватит опыта senior/TL?
artem
6 лет опыта
artem
Да, и последний вопрос. Недавно смотрел что если человек проходит сертификацию авс то у его компании повышается уровень партнерства. С зендом такое работает?
Кирилл
А какое у зенда партнерство?
Кирилл
Опыта за 6 лет должно хватить
Ilya 🃏
можно на каком-нибудь socket.io на ноде накостылить решение, взять первую попавшуюся демку, которых миллион и заюзать. можно как взрослый прикрутить центрифугу, она "ок".
"ок", я так понимаю, не значит "хорошая". Если использовать Nodejs, то не очень представляю, если честно, общение между симфони и нодой (в обе стороны). А что на счет swoole?
Андрей
если это мне вопрос, то ничем. я лишь сказал что реализация самих сокетов на пхп это странная идея сейчас. а так да, взять ноду, общаться между нодой и sf редисом
Почему странная, если это работает? Какая разница на чём реализовано? Например, есть workerman. Но в случае с чатом, лучше взять готовое решение, где есть админка и т.п. выбор зависит от размера проекта и ресурсов сервера.
Ilya 🃏
Я и сам не сразу заметил)
Андрей
Если что, это диалог 2017 года)
Ого, не понял как он мне попался)
Ilya 🃏
Наверное тыкнул на мою отсылку в сообщении и зачитался))
Ilya 🃏
Работал кто со swoole?)
Ilya 🃏
Может подсказать, как общаться симфони с ней?)
Ilya 🃏
В обе стороны)
Ilya 🃏
Неужели никто не работал со swoole?( Или другим любым сервером для вебсокет соединений
Ilya 🃏
Как из симфони обратиться к запущенному вебсокет-swoole серверу?
Ilya 🃏
А через стандартные socket_open не вариант?
Пока не просвещен, попробую покопать)
Ilya 🃏
Только подрубили, пытаемся чат на нем написать, но сохранив логику в симфони основную
Bekzod
Либа для запуска сервера)
Понятно, спасибо, пойду гуглить)
artem
Только подрубили, пытаемся чат на нем написать, но сохранив логику в симфони основную
Так а при чем тут симфа? Крутите сокет на нем на отдельном порте допустим и подрубаете клиента, я бы рекомендовал реакт. Читаете стандартно с сокета и пишите чат
artem
Просто assets bundle подруби
Ilya 🃏
Не понял, как тут клиент (реакт) связан?) АбонентА отправил сообщение, мы его получили, направили АбонентуБ (если он онлайн) и отправили в симфу инфу о том, что в бд надо-бы это сообщение также записать
Ilya 🃏
Но или же симфа в друг в какой-то момент решила, что АбонентА получил уведомление, нужно бы ему его оперативно доставить
Ilya 🃏
Через swoole
artem
Откуда клиент отправляет сообщение? Какой интерфейс?
Ilya 🃏
На вебсокет подключенный шлет, либо на сервер отдельно (пока не решили)
artem
МБ вам MQ нужен и прямые руки?
Ilya 🃏
Причем тут mq и вебсокет?)
Ilya 🃏
Пакет юзверю-то как отправить?
artem
Юзверь клиент?
Ilya 🃏
да
Ilya 🃏
Подключенный к swoole вебсокетом
artem
Сокет читает MQ и отсылает по своему прямому коннекту. Профит
artem
Swoole
artem
*
artem
Симфа кидает сообщения
artem
Ну или как изначально писал. Но если кто знает что такое ресурс и как с ним обращаться
Евгений
Коллеги, всем привет! Подскажите, есть 2 связанные таблицы, допустим это блог и посты к нему. Связь ManyToOne в постах. Если попытаемся удалить блог, то выпадет исключение Foreign key violation, возможно его как-то через assert поймать при удалении, чтобы в форме вывести ошибку и исключение не выпадало, либо свой кастом удаления писать нужно
Alexander
On delete в анотациях к связи глянь в доктрине, поможет, настроишь как тебе нужно)
Евгений
onDelete есть cascade и set null но это не подходит
Евгений
нужно просто сообщение об ошибке вывести ему и чтобы сам пошел чистить
Dmitriy
Трай кетч имхо
Евгений
Вариант, пойду easyadmin расширю контроллер и пропишу спасибо
Dmitriy
Но я Б не делал бы наверное так
Евгений
я думал что-то стандартное в аннотации есть
Sergey
orphanRemoval=true или nullable=true
Sergey
В первом случае удалит и посты, во втором нужно чуть дописать сеттер, блоги отстануться, но с пустым пост_ид
Евгений
этот вариант не подходит, так как там вообще у нас задача про футбольные команды, есть чемпионаты и есть матчи к ним и вот чтобы человек не удалил чемпионат и за этим потерлись все каскадом матчи надо его приостановить, сказать у тебя есть привязанные матчи, удали их вначале, поэтому каскад не подходит, null тоже, надо в easyadmin вывести ошибку в форме ему невозможно удаление чемпионата со связанными матчами, есть вариант расширить easyadmincontroller и там на removeEntity отлавливать все эти события, но может мудрю с этим
Александр
Может вариант перед удалением чемпионата посчитать связанные матчи и вернуть ошибку, если они есть? Буквально один запрос, зато никакой магии
Евгений
Может вариант перед удалением чемпионата посчитать связанные матчи и вернуть ошибку, если они есть? Буквально один запрос, зато никакой магии
Это все понятно, я думал аннотация есть для проверки, которая срабатывает на ondelete="restrict" и без кастомных решений всяких, но пилю свою реализацию, раз нет другого решения
Евгений
Идеально! Спасибо!
Евгений
Спасибо всем за помощь, выручили! :)
Сергей
кто-нибудь знает почему симфа не закрывает коннекшны к бд. После запроса выполняю SELECT * FROM pg_stat_activity; и вижу коннекшн со статусом idle.
Anatoliy
А ты транзакцию в доктрине закрываешь?
Сергей
А ты транзакцию в доктрине закрываешь?
я ее и не открываю. У меня там запрос примитивный - select * from users where userId=?
Сергей
еще вопрос. Выполняю один и тот же запрос - и где-то в 10% случаев он падает с ошибкой "Unrecognized field: userId" ("/app/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php","line": 1715) Падает вот в этом месте в репозитории $this->findOneBy([ 'userId' => $userId ]) Такое впечатление что падает при обращении к 1 из подов в кубе. То ли метадата как-то криво кешируется, то ли что - хз. Никто не сталкивался?
Гречушников
Господа, не по теме вопрос. а в пхп формат лога ошибок как то можно менять?
Гречушников
https://paste.laravel.io/c0267693-cc8e-43d3-88f4-4d41f27b6bc6 формат локально и на сервере отличается, от этого кибана мне средний палец показывает, при выводе ошибок
Alexandr
Господа, не по теме вопрос. а в пхп формат лога ошибок как то можно менять?
У тебя monolog? Попробуй зарегистрировать Monolog\ErrorHandler https://github.com/Seldaek/monolog/blob/master/doc/03-utilities.md Тогда всё единообразно должно быть. Вообще все ошибки включая фатальные будут через один инструмент логироваться
Гречушников
Я с ним знаком. Спасибо. Увы не могу его именно сейчас заиспол зовать
Alexandr
Можно свой обработчик сделать https://www.php.net/manual/ru/function.set-error-handler.php И в нужном формате всё писать. Не знаю как формат ошибок в дефолтном логе изменить