用 Swift 编写的跨平台非阻塞事件驱动网络框架,用于构建高性能协议服务端与客户端。
swoole/swoole-src
为 PHP 提供事件驱动网络引擎与协程运行时的扩展,用于构建长驻的 TCP、UDP、HTTP 和 WebSocket 服务。
- Star
- 18,927
- Fork
- 3,147
- 未关闭 Issue
- 34
- 最近提交
- 8小时前
这是什么?
Swoole 是一个 PHP 扩展,其 C/C++ 核心提供事件循环、协程调度器、服务端、客户端以及协议实现。借助它,PHP 应用可以作为常驻网络服务运行,同时处理大量并发连接,而无需为每个请求启动独立的 PHP 进程。
扩展内置 TCP、UDP、Unix Socket、HTTP 和 WebSocket 服务端类,并提供用于访问上游 TCP 与 HTTP 服务的协程客户端。协程允许工作进程在某个任务等待受支持的 I/O 时执行其他任务。多个 Worker 进程可利用多个 CPU 核心,Task Worker 则用于处理不应阻塞请求的耗时任务。
Swoole 的 Worker 是长驻进程,全局变量和打开的资源可能跨请求保留,需要谨慎管理。协程提供的是并发而非自动的 CPU 并行。随库附带的 PHP 组件还包括 PDO、MySQLi、Redis 连接池,以及 WaitGroup、Barrier 等工具。
核心功能
- 01基于事件驱动的 TCP、UDP 和 Unix Socket 服务端,支持多端口监听
- 02基于请求与消息回调的 HTTP 和 WebSocket 服务端
- 03协程调度器,提供 Channel 以及支持协程的 Socket 和系统 I/O
- 04用于调用上游服务的协程 TCP、UDP 和 HTTP 客户端
- 05运行时 Hook 可让部分阻塞型 PHP 函数在协程中挂起
- 06Process、共享 Table 与原子操作,用于进程间协调
适用场景
- 构建常驻内存、可处理大量请求的 HTTP API
- 用 PHP 提供实时 WebSocket 消息服务
- 用 PHP 实现自定义 TCP 或 UDP 协议网关
- 在一次请求中并发调用多个上游服务
快速上手
- 1
从 PECL 安装扩展
pecl install swoole - 2
将 HTTP 服务器示例保存为 server.php
- 3
用 PHP 运行服务器
php server.php
使用前须知
- 它是 PHP 扩展,需要安装 PHP 并在 php.ini 中加载该扩展。
- 协程不提供 CPU 并行;CPU 密集型代码仍会占用其工作进程。
- 工作进程长期运行,全局和静态状态可能跨请求保留,需要谨慎处理每个请求的数据。
- master 分支面向 Swoole 6.3 和 PHP 8.2–8.5,生产环境应选择已发布的版本。
标签
常见问题
- swoole-src 是什么?
- 为 PHP 提供事件驱动网络引擎与协程运行时的扩展,用于构建长驻的 TCP、UDP、HTTP 和 WebSocket 服务。 Swoole 是一个 PHP 扩展,其 C/C++ 核心提供事件循环、协程调度器、服务端、客户端以及协议实现。借助它,PHP 应用可以作为常驻网络服务运行,同时处理大量并发连接,而无需为每个请求启动独立的 PHP 进程。
- swoole-src 可以免费使用吗?用的什么许可证?
- swoole-src 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- swoole-src 还在维护吗?
- 活跃维护中。swoole-src 最近一次提交是在 2026年10月24日。
- swoole-src 适合用来做什么?
- 构建常驻内存、可处理大量请求的 HTTP API 用 PHP 提供实时 WebSocket 消息服务 用 PHP 实现自定义 TCP 或 UDP 协议网关 在一次请求中并发调用多个上游服务
- swoole-src 怎么安装和运行?
- 从 PECL 安装扩展: pecl install swoole 将 HTTP 服务器示例保存为 server.php 用 PHP 运行服务器: php server.php
- 在哪里获取 swoole-src?
- 源代码和安装说明在 GitHub 上:https://github.com/swoole/swoole-src
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
基于 Kotlin 的异步框架,用于构建微服务、Web 应用和 HTTP 接口,由 JetBrains 开发。
Kotlin 协程库,提供协程构建器、调度器、Flow、Channel 等异步编程与结构化并发工具。
Vert.x core 是运行在 JVM 上的响应式应用底层工具包,提供 HTTP、TCP 和文件系统等基础能力。
跨平台异步 I/O 的 C 语言库,也是 Node.js 底层所用的事件循环基础。
受 Express 启发、基于 fasthttp 构建的 Go 语言 Web 框架,用于开发 REST API 和 Web 服务。