Описание
[Дмитрий Елисеев] Способы ускорения PHP-приложений (2024) [deworker.pro]
На прошлом стриме мы с вами разобрались с разделением кода на модули и микросервисы. Пока записываются и монтируются скринкасты проведём наш очередной стрим на полезные смежные темы.
В этот раз поговорим про способы оптимизации запуска и работы PHP-приложений:
Рассмотрим подходы к ускорению работы веб-приложения. От простого включения OpCache, кеширования конфигурации и ленивой инициализации сервисов до Preload с JIT и RoadRunner, асинхронности, использования Fiber-ов и других нюансов в разных фреймворках. Потренируемся на проектах с бэнчмарками. Поговорим про возможные проблемы, удобство программирования stateless-сервисов и про передачу контекста запроса.
UPD: Провели первую часть, где показали оптимизацию запуска существующих классических приложений на Slim и Symfony:
Содержание:
- 00:00:00 — Приветствие
- 00:00:53 — Вопросы в чате
- 00:06:18 — Как работает проект и что мы можем ускорить
- 00:31:07 — Демо-приложение на SlimPHP
- 00:41:36 — Сервис Benchmark для замеров
- 00:46:30 — Замеры производительности без оптимизаций
- 00:49:28 — Случай из жизни
- 00:52:26 — Кэширования опкодов с OpCache
- 01:01:14 — Компиляция по требованию с JIT
- 01:07:22 — Ручной прогрев OpCache через Preload
- 01:24:34 — Где может пригодиться JIT
- 01:30:23 — Кэширование конфигурации приложения
- 01:53:57 — Долгоживущие приложения
- 02:03:38 — Переход с PHP-FPM на RoadRunner
- 03:07:48 — Демо-приложение на Symfony
- 03:19:24 — OpCache и готовый Preload
- 03:23:22 — Подключение RoadRunner к Symfony
- 03:33:50 — Для Laravel и других фреймворков
- 03:37:43 — Обзор результата и нюансы
- 03:43:50 — Ответы на вопросы
И во второй части написали свой асинхронный Loop с таймером на PHP как на JavaScript и показали способы написания новых приложений на асинхронных фреймворках:
- 00:00:00 — Приветствие
- 00:01:29 — Про митап с докладом про асинхронность
- 00:10:58 — Синхронная природа воркеров RoadRunner
- 00:19:36 — Неудобства от Doctrine с EntityManager
- 00:26:30 — Пересоздание EntityManager при ошибках
- 00:40:18 — Сравнение PHP и Java по типизации с Go и TypeScript
- 01:09:06 — Как устроен waitRequest в RoadRunner
- 01:23:19 — Пишем Loop для отложенного выполнения кода
- 01:47:04 — Пишем setTimeout на PHP
- 02:10:35 — Блокирующий и неблокирующий код
- 02:15:58 — Неблокирующая загрузка fetch по HTTP
- 02:34:17 — EventLoop в JavaScript
- 02:46:30 — Конкурентное и асинхронное выполнение
- 02:52:56 — Объект Promise и ожидание результата через await
- 03:11:03 — Ожидание группы через Promise::all
- 03:13:32 — Идея генераторов с yield
- 03:20:27 — Концепция зелёных потоков и Fiber
- 04:00:10 — Практическая польза неблокирующего режима
- 04:10:56 — Асинхронный сервер AmPHP
- 04:24:35 — OpCache для консольных приложений
- 04:25:20 — Скелет демонстрационного приложения
- 04:29:06 — Работа с системными сигналами в Docker
- 04:35:09 — Написание проекта на AmPHP HTTP Server
- 04:40:09 — Использование Connection Pool для БД
- 04:47:42 — Установка pcntl для работы с сигналами
- 04:49:27 — Код приложения и тест производительности
- 05:14:59 — Асинхронная инфраструктура ReactPHP
- 05:19:25 — Отлов ошибок в Promise и await
- 05:23:33 — Написание проекта на ReactPHP
- 05:49:52 — Инфраструктура Swoole и OpenSwoole
- 06:00:05 — Написание проекта на OpenSwoole
- 06:26:45 — Проблема состояния и Statefull-сервисов
- 06:40:04 — Stateless-сервисы и передача параметров запроса
- 06:50:30 — Структура для описания контекста запроса
- 07:05:58 — Использование ORM при кооперативном выполнении
- 07:14:33 — Ответы на вопросы.
Автор курса: Дмитрий Елисеев
Сайт продажника: https://deworker.pro/blog/stream-php-app-speedup
Цена с продажника: 3000 руб.
У нас Вы можете приобрести всего за 200 руб.
Отзывы
Отзывов пока нет.