Пятиминутка PHP
2.87K subscribers
334 photos
26 videos
826 links
Подкаст о PHP, DBA, архитектуре, DevOps. Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Темы про СУБД, Linux, DevOps

Автор: @petrmyazin
Download Telegram
Переходим к Laravel Octane! Тейлор говорит, что долго думал, что бы такое замутить, чатился с людьми, искал идеи…
В итоге Тейлор пришел к выводу, что все любят СКОРОСТЬ. Любое улучшение связанное с производительностью зайдёт на ура.
php-fpm архитектура shared nothing реально удобна для разработчика. С друго стороны swoole и Road Runner тоже классные инструменты. И не стоит бояться утечек памяти. Утечки у нас и так уже могут случаться в обработчиках очередей.
Последние несколько недель Тейлор занимался тюнингом Laravel, чтобы фреймворк надёжно работал под такими application серверами как Swoole и Road Runner
Пакет Laravel Octane предоставляет удобную инфрастуктуру для запуска, несколько настроек:
Запуск с помощью одной команды php artisan octane:start --server=roadrunner --workers=8
При изменении кода нужно перезапустить сервер arisan octane:reload, но это может быстро надоесть, поэтому Тейлор позаботился о Hot Reloading: artisan octane:start --workers=8 --watch (работает и для Swoole и для Road Runner)
Если утечки памяти всё-таки запарят, можно указать число запросов после которого воркер перезапустится: --max-requests=1000
Очень нагруженные роуты можно описать как Octane::route и получить безумную производительность! Но тут я не уловил: остальные роуты пойдут через php-fpm или тоже через Octane, но почему-то не так безумно производительно?
На этом Тейлор закончил. Перерыв 10 минут и далее Understanding Laravel broadcasting
MARCEL POCIOT
Let's uncover how broadcasting works under the hood in Laravel, and how a client-side implementation of Laravel Echo sends events to our browser.
Broadcasting - это про общение между сервером и клиентом. Между Laravel приложением и браузером.
Создаём событие, которое имплементирует инетрфейс ShouldBroadcast
Существует несколько "драйверов" для обработки этих broadcast событий
Основная идея: у нас есть событие (event) и мы хотим отправить его (broadcasting) куда-то наружу за пределы нашего Laravel приложения
Попробуем написать собственный broadcast driver, который делает post запрос на какой-то url
Подключаем наш собственный драйвер в конфиге
Есть некоторая неконсистентность в именовании: переменная окружения BROADCAST_DRIVER на самом деле ищет по массиву connections в конфиге broadcasting.php. В этом же конфиге используется термин driver, но это другое, никак не связанное с BROADCAST_DRIVER 🤯
Далее демо с вебсокетами на Laravel, но что-то пошло не так и зависло