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

Автор: @petrmyazin
Download Telegram
Broadcasting - это про общение между сервером и клиентом. Между Laravel приложением и браузером.
Создаём событие, которое имплементирует инетрфейс ShouldBroadcast
Существует несколько "драйверов" для обработки этих broadcast событий
Основная идея: у нас есть событие (event) и мы хотим отправить его (broadcasting) куда-то наружу за пределы нашего Laravel приложения
Попробуем написать собственный broadcast driver, который делает post запрос на какой-то url
Подключаем наш собственный драйвер в конфиге
Есть некоторая неконсистентность в именовании: переменная окружения BROADCAST_DRIVER на самом деле ищет по массиву connections в конфиге broadcasting.php. В этом же конфиге используется термин driver, но это другое, никак не связанное с BROADCAST_DRIVER 🤯
Далее демо с вебсокетами на Laravel, но что-то пошло не так и зависло
Обсудив коммуникацию между сервером и клиентом, следующий слайд: общение между фронтендом и фронтендом
Скоро выйдет laravel-websockets 2.0 - упор в горизонтальное масштабирование!
Далее по программе Understanding Foundation: What ties everything together
MIGUEL PIEDRAFITA
A deep dive into how the illuminate packages come together to create Laravel.
В начале психоделический слайд
Ручное управление памятью: сначала выделяем 10Кб, затем освобождаем
Как работает auto discovery установленных пакетов: Laravel парсит файл installed.json (сформированный composer'ом) и ищет там пакеты помеченные extra Laravel
Фасады генерируются автоматически и сохраняются в storage/framework/cache
На этом прерываю трансляцию на сон. Как у меня появится доступ к видео записям, расскажу что там дальше было. По плану ещё два доклада: Doing small things with Livewire & Alpine и Laravel's Artisan Console component
Что если хочется в легаси приложении использовать удобные функции Laravel? Например, очереди? Рецепт: на лету создать инстанс Laravel приложения, забутстрапить его и теперь можно пользоваться удобными Laravel-очередями:

```
// Подготавливаем инстанс Laravel приложения
// путь к директории bootstrap с Laravel приложением может отличается,
// зависит от текущего .php файла
$laravelApp = require DIR . '/../../bootstrap/app.php';
$bootstrappers = [
LoadEnvironmentVariables::class,
LoadConfiguration::class,
HandleExceptions::class,
RegisterFacades::class,
SetRequestForConsole::class,
RegisterProviders::class,
BootProviders::class,
];
$laravelApp->bootstrapWith($bootstrappers);
$laravelApp->loadDeferredProviders();

// Запускаем Laravel Job находясь где-то посредине Legacy приложения!
MyJob::dispatch();
```