workbunny / webman-coroutine

Webman 插件 workbunny/webman-coroutine

0.2.1 2024-09-29 04:29 UTC

This package is auto-updated.

Last update: 2024-09-29 04:34:41 UTC


README

workbunny

workbunny/webman-coroutine

🐇 Webman 协程网络服务器插件。 🐇

Webman 协程网络服务器插件。

Build Status Latest Stable Version PHP Version Require GitHub license

简介

🚀🐇 webman-coroutine 是一个基于 webman 开发框架的协程支持插件

主要实现以下功能

  1. 支持 workerman 4.xswow 协程驱动能力,兼容 workerman 5.x 版本自带的 swow 协程驱动;
  2. 支持 workerman 4.xswoole 协程驱动能力,兼容 workerman 5.x 版本自带的 swoole 协程驱动;
  3. 支持 ripple 协程驱动能力,兼容 revolt (PHP-fiber) 协程生态;
  4. 实现 coroutine web server 用于实现具备协程能力的 web 服务;

说明

  1. workerman 4.x/5.x 驱动下的 webman 框架无法完整使用 swoole 的协程能力,所以使用 CoroutineWebServer 来替代 webman 自带的 webServer
  2. workerman 4.x 下还未有官方支持的 swow 协程驱动,本插件提供 SwowEvent 事件驱动支持 workerman 4.x 下的协程能力
  3. 由于配置 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 环境

  1. 使用 ./vendor/bin/swow-builder 安装 swow 扩展,注意请关闭 swoole 环境
  2. 修改 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 事件驱动
  3. 使用 php -d extension=swow webman start 启动
  4. webman 自带的 webServer 协程化,可以关闭启动的 CoroutineWebServer

注:CoroutineWebServer 可以在 config/plugin/workbunny/webman-coroutine/app.php 中通过 enable=false 关闭启动

2. swoole 环境

  1. 使用 pecl install swoole 安装稳定版 swoole 扩展
  2. 建议不要将 swoole 加入 php.ini 配置文件
  3. 修改 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 事件驱动
  4. 使用 php -d extension=swoole webman start 启动
  5. 通过 config/plugin/workbunny/webman-coroutine/process.php 启动的 CoroutineWebServer 可以用于协程环境开发,原服务还是 BIO 模式

3. ripple 环境

  1. 使用 composer require cclilshy/p-ripple-drive 安装 ripple 驱动插件
  2. 修改 config/server.php 配置
    • 'event_loop' => \Workbunny\WebmanCoroutine\event_loop() 自动判断,请勿开启 swow、swoole,
    • 'event_loop' => \Workbunny\WebmanCoroutine\Factory::RIPPLE_FIBER 手动指定
  3. 使用 php webman start 启动

注:该环境协程依赖 php-fiber,并没有自动 hook 系统的阻塞函数,但支持所有支持 php-fiber 的插件

文档

♨️ 相关文章

💕 致谢

💕 感恩 workerman 和 swow 开发团队为 PHP 社区带来的创新和卓越贡献,让我们共同期待 PHP 在实时应用领域的更多突破!!!