Рассмотрим подходы к ускорению работы веб-приложения. От простого включения OpCache, кеширования конфигурации и ленивой инициализации сервисов до Preload с JIT и RoadRunner, асинхронности, использования Fiber-ов и других нюансов в разных фреймворках. Потренируемся на проектах с бэнчмарками. Поговорим про возможные проблемы, удобство программирования stateless-сервисов и про передачу контекста запроса.
Содержание
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 - Ответы на вопросы
Информация о видео Название: Способы ускорения PHP-приложений Автор: Дмитрий Елисеев Год выхода: 2024 Жанр: Видеокурс Язык: Русский Выпущено: Россия Продолжительность: 11 часов 50 мин