workbunny / webman-coroutine
Webman 插件 workbunny/webman-coroutine
    0.2.1
    2024-09-29 04:29 UTC
Requires
- php: ^8.0
- swow/swow: ^1.5
- webman/console: ^1.0
- workerman/webman-framework: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mockery/mockery: ^1.6
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.6
- swoole/ide-helper: ^5.1
- symfony/var-dumper: ^6.0
Suggests
- ext-swoole: For supporting Swoole handler.
- cclilshy/p-ripple-drive: For supporting Ripple handler.
README
workbunny/webman-coroutine
🐇 Webman 协程网络服务器插件。 🐇
Webman 协程网络服务器插件。
简介
🚀🐇 webman-coroutine 是一个基于 webman 开发框架的协程支持插件
主要实现以下功能:
- 支持 workerman 4.x的 swow 协程驱动能力,兼容workerman 5.x版本自带的swow协程驱动;
- 支持 workerman 4.x的 swoole 协程驱动能力,兼容workerman 5.x版本自带的swoole协程驱动;
- 支持 ripple 协程驱动能力,兼容 revolt (PHP-fiber)协程生态;
- 实现 coroutine web server用于实现具备协程能力的 web 服务;
说明
- workerman 4.x/5.x驱动下的 webman 框架无法完整使用- swoole的协程能力,所以使用- CoroutineWebServer来替代- webman自带的- webServer
- workerman 4.x下还未有官方支持的- swow协程驱动,本插件提供- SwowEvent事件驱动支持- workerman 4.x下的协程能力
- 由于配置 event-loop等操作相较于普通开发会存在一定的心智负担,所以本插件提供了event_loop()函数,用于根据当前环境自动选择合适的事件驱动
安装
通过 composer 安装
composer require workbunny/webman-coroutine
注:目前处于开发阶段,请使用
dev-main分支体验
配置说明
- enable : (true/false), 是否启用协程 webServer
- port : (int), 协程 webServer 默认端口
- channel_size : (int), 每个连接的 channel 容量
- consumer_count : (int), 每个连接的消费者数量
使用
1. swow 环境
- 使用 ./vendor/bin/swow-builder安装swow扩展,注意请关闭swoole环境
- 修改 config/server.php中'event_loop' => \Workbunny\WebmanCoroutine\event_loop(),event_loop()函数会根据当前环境自行判断当前的 workerman 版本,自动选择合适的事件驱动- 当开启 swow扩展时,workerman 4.x下使用SwowEvent事件驱动
- 当开启 swow扩展时,workerman 5.x下使用workerman自带的Swow事件驱动
- 当未开启 swow时,使用workerman自带的Event事件驱动
 
- 当开启 
- 使用 php -d extension=swow webman start启动
- webman 自带的 webServer 协程化,可以关闭启动的 CoroutineWebServer
注:
CoroutineWebServer可以在config/plugin/workbunny/webman-coroutine/app.php中通过enable=false关闭启动
2. swoole 环境
- 使用 pecl install swoole安装稳定版 swoole 扩展
- 建议不要将 swoole加入php.ini配置文件
- 修改 config/server.php中'event_loop' => \Workbunny\WebmanCoroutine\event_loop(),event_loop()函数会根据当前环境自行判断当前的 workerman 版本,自动选择合适的事件驱动- 当开启 swoole 扩展时,workerman 4.x 下使用 SwooleEvent 事件驱动
- 当开启 swoole 扩展时,workerman 5.x 下使用 workerman 自带的 Swoole 事件驱动
- 当未开启 swoole 时,使用 workerman 自带的 Event 事件驱动
 
- 使用 php -d extension=swoole webman start启动
- 通过 config/plugin/workbunny/webman-coroutine/process.php启动的 CoroutineWebServer 可以用于协程环境开发,原服务还是 BIO 模式
3. ripple 环境
- 使用 composer require cclilshy/p-ripple-drive安装 ripple 驱动插件
- 修改 config/server.php配置- 'event_loop' => \Workbunny\WebmanCoroutine\event_loop()自动判断,请勿开启 swow、swoole,
- 'event_loop' => \Workbunny\WebmanCoroutine\Factory::RIPPLE_FIBER手动指定
 
- 使用 php webman start启动
注:该环境协程依赖
php-fiber,并没有自动hook系统的阻塞函数,但支持所有支持php-fiber的插件
文档
♨️ 相关文章
- webman 如何使用 swow 事件驱动和协程?
- PHP 高性能纯协程网络通信引擎 Swow
- workerman5.0 和 swoole5.0 实现一键协程
- webman 如何使用 swoole 事件驱动和协程?
💕 致谢
💕 感恩 workerman 和 swow 开发团队为 PHP 社区带来的创新和卓越贡献,让我们共同期待 PHP 在实时应用领域的更多突破!!!