Mastering Swoole PHP: Build High Performance Concurrent System with Async and Coroutines / Осваиваем Swoole PHP: построение высокопроизводительной конкурентной системы с асинхронностью и корутинами: Промисы и цепочки then
Оглавление
- Переводчики
- Блог
- Часть 1: Введение
- О чем эта книга?
- Что такое Swoole PHP
- Часть 2: Основы
- PHP-FPM без сохранения состояния
- Преимущества отсутствия сохранения состояния
- Оборотная сторона отсутствия сохранения состояния
- Резюме
- Блокирование ввода/вывода в PHP-FPM
- Проблемы производительности
- Проблемы конкурентности
- Быстрые и медленные компоненты
- Конкурентные модели
- Модели конкурентного программирования
- Резюме
- PHP в командной строке
- Режим командной строки
- Резюме
- Часть 3: Основные концепции
- Исполнитель и контейнеры выполнения
- Контейнеры общего исполнения
- Вытесняющая и кооперативная многозадачность
- Коммуникация и синхронизация состояний
- Резюме
- Управление жизненным циклом
- Жизненный цикл переменной
- Жизненный цикл процесса
- Жизненный цикл TCP-соединения
- Некоторые факты о TCP-соединениях
- Резюме
- Уменьшение связанности и слои
- Некоторые послойные структуры
- Ввод/вывод и снижение связанности CPU
- Паттерн "Реактор"
- Очередь, буфер, буферизация и пакетная обработка
- Буфер и буферизация
- Пакетная обработка
- Очереди
- Резюме
- Трубы и каналы
- Трубы Linux
- Сокеты
- Каналы корутин
- Контекст, стек и переключение контекста
- Переключение контекста может быть дорогостоящим
- Синглплекс против мультиплекса
- Синглплекс
- Мультиплекс
- Процесс мультиплексирования и демультиплексирования
- Резюме
- Асинхронность
- Асинхронность с системной точки зрения
- Синхронность - это природа внутренних компонентов
- Асинхронность - это природа отдельных компонентов
- Накладные расходы асинхронности
- Задержка и пропускная способность
- Модели асинхронности
- Обратные вызовы
- Ключевые слова async, await, yield, resume и promise
- Файберы и корутины
- State, stateless, stateful и pooling
- Стоимость инициализации состояний
- Без сохранения состояния
- Сохранение состояние
- Pool и pooling
- Pooling памяти
- Резюме
- Файловые дескрипторы, поток ввода/вывода
- Стандартный поток ввода/вывода в PHP
- Подключить или перенаправить поток ввода/вывода
- Блокирующий и неблокирующий режимы
- Мультиплексирование потока ввода/вывода
- Исключения и таймауты
- Крайние случаи
- Обработка таймаутов
- Error vs Exceptions
- Повторная попытка и идемпотентность
- Обработка исключений в Swoole PHP
- Протокол
- Шаблоны запросов и ответов
- Упаковка двоичного протокола в PHP
- Протоколы TCP и UDP
- Протокол на основе TCP
- Пользовательский протокол по TCP
- Конкурентность и модель ввода/вывода
- Параллельность и конкурентность
- Конкурентные модели ввода/вывода
- Резюме
- Событийность и обратные вызовы
- События и событийность
- Функции обратного вызова
- Факты, затраты и ограничения
- Значения задержек
- Числовое описание задержки
- Кэш и кэширование
- Размер стека
- Количество файловых дескрипторов
- Переключение контекста и ограничение памяти
- Ограничения скорости и ограничения конкурентности
- Теория очередей
- Часть IV: Практический мир ОС Linux
- Пользовательский режим и режим ядра
- Системный вызов в ядре ОС
- Переключение контекста
- Управление памятью
- Память стека
- Память кучи
- Управление памятью
- Процесс, поток и корутины
- Процесс Linux
- Разветвление процесса и копирование памяти
- Потоки Linux
- Корутины Swoole PHP
- Сокеты и сетевой ввод-вывод
- Сокеты
- Обработка тайм-аута и исключений
- Блокирующий и неблокирующий ввод/вывод
- Делаем сокеты неблокирующимися и мультиплексированными
- Select
- Poll и epoll
- Резюме
- Обратные вызовы, await async и корутины
- Обратные вызовы
- Промисы и цепочки then
- Async и Await
- Корутины и файберы
- Справедливое планирование
- Часть 5: Подключение с помощью протоколов
- Протокол TCP/UDP
- Жизненный цикл TCP-соединения
- Стоимость установления соединения
- Постоянное соединение
- Резюме
- Протокол HTTP
- HTTP 1.1 сохранение соединения
- HTTP 1.1 SSE
- HTTP 1.1 тестирование произовдительности
- Резюме
- Протокол WebSocket
- Рукопожатие и установление соединения
- Модель протокола
- Клиентская сторона JavaScript
- Резюме
- Протокол HTTP2 и gRPC
- HTTP2
- gRPC
- Веб-производительность
- Дополнительные мысли
- Резюме
- Пользовательский протокол
- Пользовательский протокол по TCP
- Резюме
- Часть 6: Среда выполнения Swoole и расширение PHP
- Синтаксис PHP
- Расширения PHP
- Сравнение с жизненным циклом PHP-FPM
- Структура Swoole PHP-сервера
- Переменные и состояния
- Типы переменных и скоуп
- Глобальные переменные
- Жизненный цикл переменной
- Утечки памяти
- Хранение переменной
- Изолирование глобальных переменных для корутин
- Переменная и конкурентность
- Событийный цикл и асинхронный ввод/вывод
- Мультиплексирование ввода/вывода
- Событийный цикл
- Системные вызовы: select, poll и epoll, kqueue
- Хуки Swoole для клиентских библиотек
- Корутины Swoole PHP
- Boost. Библиотека контекста
- Виртуальная машина PHP
- Чем полезны корутины?
- Коды блокировки ввода/вывода
- Резюме
- Множественный режим выполнения
- Режим BASE и режим PROCESS
- Коды асинхронного ввода/вывода и блокировки ввода/вывода
- Режим блокировки
- Часть 7: Практика Swoole PHP
- Сервер Swoole
- Swoole TCP-сервер
- Swoole UDP-сервер
- Swoole HTTP-сервер
- Swoole HTTP2-сервер
- Swoole Redis-сервер
- Резюме
- Swoole сервер-воркеры
- Главный процесс
- Процесс менеджера
- Процесс сервер-воркера
- Процессорная близость сервер-воркеров
- Процесс таск-воркера
- Процесс Sidecar
- Резюме
- Процесс Swoole
- Выполнение внешнего процесса
- Пул процессов Swoole
- Резюме
- КлиентыSwoole
- TCP-клиент с блокирующим вводом-выводом
- TCP-клиент с асинхронным вводом-выводом корутин
- HTTP-клиент Swoole корутин
- Совместимые с корутинами клиентские библиотеки PHP
- Swoole Coroutine FastCGI-клиент
- Резюме
- Swoole Table
- Swoole Timer
- Swoole корутины и каналы
- Контекст корутин Swoole
- Корутины Swoole
- Структуры корутин Swoole
- Каналы Swoole
- Тайм-аут операции
- Закрытие канала
- Часть 8: Примеры использования и шаблоны
- HTTP сервисы
- Создание простого сервиса HTTP 1.1 с помощью Swoole PHP
- Размещение статичных файлов на сервере Swoole
- Обработка данных
- Проблема одного процесса PHP скрипта
- Использование всех ресурсов для обработки данных
- Использование мощности нескольких машин
- Прокси HTTP и PHP-FPM
- Прокси HTTP
- Прокси PHP-FPM
- Процесс Sidecar
- Служба TCP
- Сервер WebSocket
- "Hello World" WebSocket сервера
- Служба таймера WebSocket
- Планировщик задач
- Производитель и Потребитель
- Использование корутин
- Использование процесса
- Маппинг M:N конкурентности
- Мультиплексирование и демультиплексирование
- Протокол мультиплексирования
- Несколько слов о конкурентности MySQL
- Сервер протокола мультиплексирования
- Резюме
- Пул соединений
- Реализация пула ресурсов с помощью SplQueue
- Встроенный пул подключений
- Определение собственного пула соединений
- Резюме
- Web spider и scraper
- Система PUBSUB
- Создание простой PUBSUB с помощью Swoole
- Отправляемые сервером события (SSE)
- Интеграция с процессом Linux
- Резюме
- Управление сервисами: RPC и gRPC
- Определение протокола gRPC
- Клиент gRPC на Swoole
- Сервер gRPC на Swoole
- Резюме
- Ограничение скорости
- Общая идея
- Попробуйте и почувствуйте
- Использование ограничителей скорости в службе HTTP
- Резюме
- Разработка собственных протоколов TCP
- Мониторинг и отчетность
- Часть 9: Хостинг и развертывание
- Docker и Kubernetes
- Создайте собственный Dockerfile
- Процесс переднего плана
- Управление логами приложения Swoole
- Запуск на AWS EC2 или на голом железе
- Настройка количества воркеров сервера Swoole
- Демонизация и передний план
- Управление процессом приложения Swoole
- Управление процессом Swoole с помощью PHP-кода
- Управление логированием приложения Swoole
- Наблюдение и кеширование с внешним прокси
- Не конец
0%
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
||
