Кроссплатформенный событийный сетевой фреймворк на Swift с неблокирующим вводом-выводом для высокопроизводительных серверов и клиентов протоколов, аналог Netty.
swoole/swoole-src
PHP-расширение с событийным сетевым движком и средой выполнения корутин для создания постоянно работающих TCP-, UDP-, HTTP- и WebSocket-сервисов.
- Звёзды
- 18,927
- Форки
- 3,147
- Открытые issues
- 34
- Последний коммит
- 10 часов назад
Что это?
Swoole — PHP-расширение, ядро которого на C/C++ предоставляет цикл событий, планировщик корутин, серверы, клиенты и реализации протоколов. Оно позволяет PHP-приложениям работать как постоянно запущенные сетевые сервисы и обрабатывать множество одновременных подключений, не запуская отдельный процесс PHP для каждого запроса.
В расширение входят классы серверов для TCP, UDP, Unix-сокетов, HTTP и WebSocket, а также клиенты на корутинах для исходящих TCP- и HTTP-запросов. Пока корутина ожидает поддерживаемый ввод-вывод, рабочий процесс может выполнять другие задачи. Несколько рабочих процессов могут задействовать несколько ядер CPU, а task workers обрабатывают задачи, которые не должны блокировать обработку запросов.
Рабочие процессы Swoole работают долго, поэтому глобальное состояние и открытые ресурсы могут сохраняться между запросами и требуют внимательного управления. Корутины обеспечивают конкурентное выполнение, а не автоматический параллелизм на CPU. В комплектную PHP-библиотеку входят пулы подключений для PDO, MySQLi и Redis, а также такие утилиты, как WaitGroup и Barrier.
Ключевые возможности
- 01Событийные TCP-, UDP- и Unix-сокетные серверы с несколькими портами для прослушивания
- 02HTTP- и WebSocket-серверы на основе колбэков запросов и сообщений
- 03Планировщик корутин с каналами и поддержкой корутин для сокетного и системного ввода-вывода
- 04TCP-, UDP- и HTTP-клиенты на корутинах для исходящих запросов
- 05Runtime hooks, позволяющие выбранным блокирующим функциям PHP уступать управление внутри корутин
- 06API процессов, общих таблиц и атомарных операций для межпроцессной координации
Сценарии использования
- Создание HTTP API, которые остаются в памяти и обрабатывают множество запросов
- Обслуживание обмена сообщениями в реальном времени через WebSocket на PHP
- Реализация шлюзов для пользовательских TCP- или UDP-протоколов на PHP
- Параллельные вызовы нескольких внешних сервисов в рамках одного запроса
Быстрый старт
- 1
Установите расширение из PECL
pecl install swoole - 2
Сохраните пример HTTP-сервера как server.php
- 3
Запустите сервер с помощью PHP
php server.php
Что важно знать
- Это расширение PHP, поэтому PHP должен быть установлен, а расширение — подключено в php.ini.
- Корутины не обеспечивают параллельное выполнение на CPU; код с высокой нагрузкой на CPU по-прежнему блокирует свой worker.
- Долгоживущие workers могут сохранять глобальное и статическое состояние между запросами, поэтому с данными отдельных запросов нужно обращаться осторожно.
- Ветка master рассчитана на Swoole 6.3 и PHP 8.2–8.5, поэтому для production выберите выпущенную версию.
Темы
Частые вопросы
- Что такое swoole-src?
- PHP-расширение с событийным сетевым движком и средой выполнения корутин для создания постоянно работающих TCP-, UDP-, HTTP- и WebSocket-сервисов. Swoole — PHP-расширение, ядро которого на C/C++ предоставляет цикл событий, планировщик корутин, серверы, клиенты и реализации протоколов. Оно позволяет PHP-приложениям работать как постоянно запущенные сетевые сервисы и обрабатывать множество одновременных подключений, не запуская отдельный процесс PHP для каждого запроса.
- swoole-src можно использовать бесплатно? Какая у него лицензия?
- swoole-src распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- swoole-src всё ещё поддерживается?
- Активно поддерживается. Последний коммит в swoole-src — 24 окт. 2026 г..
- Для чего можно использовать swoole-src?
- Создание HTTP API, которые остаются в памяти и обрабатывают множество запросов Обслуживание обмена сообщениями в реальном времени через WebSocket на PHP Реализация шлюзов для пользовательских TCP- или UDP-протоколов на PHP Параллельные вызовы нескольких внешних сервисов в рамках одного запроса
- Как установить swoole-src?
- Установите расширение из PECL: pecl install swoole Сохраните пример HTTP-сервера как server.php Запустите сервер с помощью PHP: php server.php
- Где скачать swoole-src?
- Исходный код и инструкции по установке — на GitHub: https://github.com/swoole/swoole-src
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Асинхронный Kotlin-фреймворк от JetBrains для создания микросервисов, веб-приложений и HTTP API.
Библиотека Kotlin с coroutine builders, диспетчерами, Flow, каналами и примитивами структурированной конкурентности для асинхронного кода.
Vert.x core — низкоуровневый инструментарий для создания реактивных приложений на JVM на основе event loop, с поддержкой HTTP, TCP и доступа к файловой системе.
Библиотека C для кроссплатформенного асинхронного ввода-вывода — основа event loop в Node.js.
Веб-фреймворк для Go в духе Express на базе fasthttp — для создания REST API и веб-серверов.