О книге
- Целевая аудитория
- Примеры кода
- Благодарности
- Опечатки
Асинхронный PHP
- Введение
- Что же использовать?
- Асинхронность и параллельность
- Реальное приложение
HTTP-сервер
- Необходимые компоненты
- HTTP-сервер в пару строк
- Событийно-ориентированное выполнение
- Обработка запроса
Маршрутизация запросов
- Организация кода
- Что такое маршрутизатор?
- Класс Router
- Ответ из маршрутов
- Рефакторинг маршрутизатора
Отрисовка HTML-файлов
- Чтение файлов. Как НЕ надо делать
- Блокирующие и неблокирующие вызовы
- Дочерний процесс
- Совместимость с Windows
- Инъекция зависимостей
- Связываем дочерний процесс и ответ с помощью потоков
- Текущая рабочая директория
Обработка POST-запросов
- Загрузка файлов
- Сохранение загруженных файлов на диск
- Баг с зависшими процессами
Просмотр списка загруженных файлов
- Перенаправление вывода потоков
- Отрисовка PHP-шаблона
- Обновляем ответ после загрузки
- Переносим список загруженных файлов на главную страницу
- Почему эта строка была всё время была закомментирована?
Добавляем превью изображений
- Маршрутизатор с регулярными выражениями
Извлекаем контроллеры
- Добавляем пространство имен приложения
- Первый контроллер
- Удаляем логику из определений маршрутов
- Фабрика дочерних процессов
- Контроллер для скачивания файлов
- Контроллер для фавиконки
Генерация превью изображений
- Потоки и события
- Отображаем превью загрузок
- Проблема асинхронного ответа
Отложенный ответ
- Проблема
- Промис и отложенный ответ
- Отложенный ответ
Обработка ошибок
- Событие Error
- Зачем сервер ловит все ошибки и исключения?
- Ловим все ошибки
Запуск приложения
- Supervisor: скрипт как сервис