Об этом проекте

Swoole — это расширение PHP, предоставляющее событийно-ориентированную, асинхронную среду выполнения параллелизма на основе сорутин. Оно написано как расширение на C и устанавливается через PECL или компилируется из исходного кода; для работы требуются Linux, macOS, Cygwin или WSL, PHP 8.2 или новее, а также GCC 4.8 или новее. Основные возможности, описанные в README: - Сорутины: встроенное планирование сорутин позволяет разработчикам писать PHP-код, который выглядит как синхронный, но выполняется асинхронно. Сорутины описываются как сверхлегкие потоки, тысячи которых можно создать в рамках одного процесса. - Хуки среды выполнения: Swoole\Runtime::enableCoroutine() заменяет указатели функций потоков Zend VM, благодаря чему блокирующие функции ввода-вывода становятся неблокирующими и планируются в сорутинах. Поддерживаемые интеграции включают ext-curl (с Symfony и Guzzle), ext-redis, ext-mysqli, несколько драйверов PDO (MySQL, PostgreSQL, SQLite, Oracle, ODBC), потоковые функции поверх TCP/UDP/UDG/Unix/SSL-TLS и API файловой системы, ext-sockets, ext-soap, функции sleep, proc_open, gethostbyname, shell_exec, exec, а также файловые функции, такие как fread/fopen/fsockopen/fwrite/flock. - Серверы: серверы HTTP, WebSocket, HTTP/2 и TCP могут использовать один общий цикл событий; в примере WebSocket-сервер также прослушивает необработанный TCP на втором порту. Сетевой уровень использует epoll/kqueue. - Клиенты: представлены сорутинные клиенты для HTTP, WebSocket, HTTP/2 и TCP с автоматическим планированием DNS, обработки запросов и ответов. - Каналы: Swoole\Coroutine\Channel обеспечивает взаимодействие между сорутинами в стиле CSP, что продемонстрировано на примере пула соединений Redis и шаблона производитель/потребитель. - Таймеры: Swoole\Timer::tick, after, clear и exists, а также циклы ожидания на основе сорутин. - Смешанные нагрузки: README иллюстрирует 10 тысяч операций sleep, чтение/запись файлов, запросы PDO/MySQLi и обмен данными между сервером и клиентом по TCP/UDP в рамках одного процесса с использованием хуков среды выполнения. Варианты установки включают PECL (pecl install swoole) или сборку из исходного кода (phpize, configure, make, make install) с дополнительными флагами, такими как --enable-openssl, --enable-sockets, --enable-mysqlnd и --enable-swoole-curl. Асинхронные клиенты и API были перенесены в отдельное расширение swoole_async, начиная с версии 4.3.0. Проект лицензирован под лицензией Apache 2.0 и ссылается на wiki.swoole.com для получения документации, репозиторий хелперов для IDE, список Awesome Swoole, а также каналы сообщества в Twitter, Discord и китайскоязычное сообщество.