Repolode
swoole

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. 1

    Установите расширение из PECL

    pecl install swoole
  2. 2

    Сохраните пример HTTP-сервера как server.php

  3. 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 обновляется ежедневно.

Похожие проекты