artem
Кстати интересно. Начал юзать новые аннотации. Кто-то смотрел прирост производительности?
artem
8.1
Konstantin
вряд ли прирост производительности должен быть решающим в переходе на аттрибуты и 8.1 в целом
Konstantin
она компилировалась и неплохо кешировалась
artem
Поправочка* допустим есть проект на 7.3 (нет такого проекта) стоит ли переписывать на 8.x для производительности
Konstantin
для производительности - точно нет, вряд ли ты заметишь измеримую разницу
Konstantin
99% что у тебя основное время потребляет база, файлы, рендеринг, буферизация и прочее
Konstantin
и даже если ты выиграешь 10% с чистого php time, в общем потоке это будут слёзы
Konstantin
5мс из 100, например
Gleb
Так оно не кэшируется только на дев-среде, но там мне кажется все-равно больше машина разработчика влияет, чем php7.3->8.0
Gleb
плюсом всякие docker в win/macos
Задорный Копатыч
Бенчмарки говорят что 7.*->8.0 не сильный прирост *->8.1 сильный.
Задорный Копатыч
PHP: PHP 8.1.0 Release Announcement https://www.php.net/releases/8.1/ru.php
Задорный Копатыч
Там пониже есть сравнение.
Ivan
Все хотел спросить узнать почему перестали выходить новости по пхп на канале t.me/phpdigest, а сейчас заметил что Роман из Харькова. Может кто-то из РФ пока будет такие обзоры делать?
Павел
Альберт пытается в https://t.me/php_russian_talks/8287
Формат чатика еще одного :(
Павел
Было бы лентой вообще было бы 👍👍👍
Dima
Привет всем. Состояю тут уже некоторое время, но пишу впервые. У меня есть сущность со свзью в коллекции которой может быть 200к элементов. Доктрина позволяет немного оптимизировать этот момент, типа пока не достаёшь сами элементы коллекции, они вытягиваться не будут. (fetch="EXTRA_LAZY") В частности есть ещё ряд методов, которые позволяет оптимально работать с коллекцией (по типу как с пагинацией получается) Какие ещё могут быть советы?
Konstantin
не использовать ассоциации на большие таблицы 🙂
Konstantin
делать условно, не знаю что там у вас, не $user->getComments() /* где комментариев может быть 200к у одного юзера */
Konstantin
а $commentsRepository->findByUser($user)
Konstantin
Делать запрос на чистом sql, если много связей
а квери-билдером нельзя оптимально поселектить? а dql?
Konstantin
качественный ответ, мне даже интересно стало, чем он обусловлен
Nikolay
а квери-билдером нельзя оптимально поселектить? а dql?
Чистый в смысле без lazy и других штук
Konstantin
можно ведь сказать по-русски: не используйте коллекции, а выбирайте связанные сущности отдельным запросом
Юра
Неважно как ты будешь селектить такую коллекцию, если у тебя овер много энтитей у тебя просто закончится память быстро
Юра
Ты можешь использовать на коллекции метод matching() тогда доктрина вернёт часть коллекции
Юра
Например можно сразу отфильтровать только активные коменты или что-то такое
Юра
Но вообще лучше не использовать энтити там где ожидается большой результат
Konstantin
я вот считаю, что делать запросы (использовать Criteria) в сущностях - это актив-рекорд какой-то, не надо так делать
Konstantin
максимум - какие-то парент-сущности достать, а любые вложенные - селектите руками из репозитория, а не геттером
Dima
А как тестировать такие моменты? Например, хочу протестировать производительность, как доктрина работает с огромной коллекцией. Либо в целом запрофайлить запрос. Пока смотрел только на результаты WebProfiler бандла , но он не даёт нужного понимания что происходит в запросе
Dima
Писать тесты предварительно нагнав 100к записей, тоже сомнительный вариант
Yurii
Xhprof
Dima
ща глянем
Dima
Xhprof
Не знаешь, php8.1 он работает? Ибо обновлялся он давненько, а на пхп.нет он поддерживает до 7.4
Vlad
на 8.1 xhprof не работает, крашит фпм при запросе
Юра
Попробуй сбилдить с мастер ветки
Anonymous
Ку, Хочу пообщаться.
Yurii
Все спят
Руслан 🇲🇨
Здравствуйте! В одном блоке страницы есть выводятся категории в виде ссылок. Можно ли при помощи twig реализовать вывод товаров в другом блоке при нажатии на категорию?
Иван
твиг ничего не знает о нажатиях
Юра
Можно джаваскриптом
Юра
Аяксом можно отправить запрос, получить html, вставить куда нужно
Руслан 🇲🇨
🙏
Руслан 🇲🇨
Если мне нужно в роуте указать несколько маршрутов так можно делать: index: path: / controller: App\Controller\DefaultController::index path: /3 controller: App\Controller\DefaultController::three?
Иван
это разные роуты
Руслан 🇲🇨
Мне нужно чтобы разные маршруты разные действия выполняли.
Иван
это разные роуты, у них должны быть разные имена
Nikolay
Мне нужно чтобы разные маршруты разные действия выполняли.
Роут может совпадать если методы разные только
Konstantin
Если мне нужно в роуте указать несколько маршрутов так можно делать: index: path: / controller: App\Controller\DefaultController::index path: /3 controller: App\Controller\DefaultController::three?
в ямле очевидно нет, вы перезаписываете ключ. три аттрибута Route с тремя разными path можно навесить на один метод. либо три роута в ямле, да
Руслан 🇲🇨
это разные роуты, у них должны быть разные имена
Переделал: index: path: / controller: App\Controller\DefaultController::index three: path: /3 controller: App\Controller\DefaultController::three все равно не работает.
Konstantin
визуально должно работать, что говорит debug:router
Gleb
Переделал: index: path: / controller: App\Controller\DefaultController::index three: path: /3 controller: App\Controller\DefaultController::three все равно не работает.
Роуты в ямл работают по первому совпадению вроде, /3 надо поставить выше /
Gleb
В смысле что бы на один запрос отработали оба роута?
Руслан 🇲🇨
Нет. Чтобы прописать два роута на два запроса в одном файле.
Иван
можно же нормально в атрибутах писать и писать разные имена роутам что мешает?
Gleb
Просто определение более специфичного роута ставьте выше по файлу чем более общего.
Gleb
А так их можно определять в одном файле.
Konstantin
бтв, это не зависит от способа определения, в аттрибутах правила те же
Иван
у / и /3 одинаковая специфичность я не знаю, то тут не работает
Konstantin
у / и /3 одинаковая специфичность я не знаю, то тут не работает
мне кажется что корень как-то особо трактуется
Konstantin
так-то вы правы, да
Иван
вот если у нас image/add и image/{id} тут надо колдануть
Иван
либо add первым, либо {id} указать d+
Gleb
Так вроде же сравнение по факту префиксное? От сюда получается такое поведение. (Про корень)
Руслан 🇲🇨
первый роут жаднее, его ниже надо, more specific - выше
Поменял. Пишет: "Объект не найден!".
Gleb
Поменял. Пишет: "Объект не найден!".
У симфони довольно информативные ошибки, какой объект не найден?
The Ant
Есть какой-то способ в симфони мессенжере запустить задачу после нескольких выполненных задач? (штатный, без костылей) Поясню: Например создаем пост, загружаем медиа материалы. В отдельных тасках обрабатываем медиа материалы, каждый в отдельном. Фильтры\оптимизации на фотки, подготовка видео и т.д. Затем когда всё закончится запустить проверку. Все асинк, разумеется.