【workbunny】协程基建
1.1.5
版本
2024-10-14
版本更新时间
67
安装
55
star
Webman Coroutine Infrastructure Suite Compatible with Workerman.
简介
🚀🐇 webman-coroutine 是一个支持 workerman / webman 开发框架生态下的协程基建支撑插件
起源
- workerman 4.x 及基于其作为运行容器的 webman 框架不支持协程
- workerman 5.x 及基于其作为运行容器的 webman 框架不具备完备的协程能力
- workerman / webman 没有一个较为统一的协程使用方式,导致切换协程驱动的开发成本较高,试错成本较高
- 自行实现协程版worker、server开发成本较高,试错成本较高
目的
-
提供 workerman/webman 多样的基础协程事件库,兼容支持
workerman 4.x
和workerman 5.x
的协程驱动 -
提供 workerman/webman 统一的协程开发工具,兼容非协程环境
- 协程通道:Utils/Channel
- 协程等待:Utils/WaitGroup
- 协程:Utils/Coroutine
- 协程化Worker:Utils/Worker
- 对象池:Utils/Pool
愿景
- 在 workerman/webman 开发环境下,提供一套简单的协程工具包,降低心智负担。
- 在 workerman/webman 开发环境下,尝试实现一套兼容协程与非协程开发的方案,让方案选择和方案逃离更简单,避免更多的焦虑。
- 在 workerman/webman 开发环境下,尽可能实现对官方组件的非侵入的协程化改造
(虽然很难,但也想试试)
。 - 希望在代码的实现上能够给更多PHP开发带来一些帮助,甚至灵感。
安装
通过composer
安装
composer require workbunny/webman-coroutine
说明
目录
|-- config # webman 配置文件
|-- plugin
|-- webman-coroutine
|-- app.php # 主配置信息
|-- process.php # 启动进程
|-- Events # workerman-4.x 事件驱动文件
|-- Exceptions # 异常
|-- Handlers # 入口主驱动
|-- Utils # 工具包
|-- Channel # 通道 驱动
|-- Coroutine # 协程 驱动
|-- WaitGroup # wait group 驱动
|-- Worker # worker 驱动
|-- Pool # 对象池 驱动
|-- RegisterMethods.php # 驱动注册助手
|-- Factory # 入口类
|-- CoroutineWebServer.php # webman 自定义http服务
|-- helpers.php # 入口助手
助手函数
event_loop()
用于自动判断当前环境适合的event loop和协程驱动环境的自动判定按照
Factory::$_handlers
的顺序择先加载package_installed
用于判定当前环境是否安装对应composer包wait_for
用于进程非阻塞地等待对应条件执行(一般是子协程执行结果)is_coroutine_env
用于判断当前环境是否为workbunny协程环境安装workbunny/webman-coroutine后自动会注册环境变量
WORKBUNNY_COROUTINE=1
文档
目录 | 地址 |
---|---|
API | Fucntion-APIs |
教程 | PHP 协程入门 |
- | 安装及配置 |
- | workerman 环境 |
- | webman 框架 |
- | Utils 说明 |
- | 自定义拓展 |
参与开发
规范
- 新特性提交请先提交feature-issue,再提交PR,避免重复开发;
- Bug修复请先提交bug-repo-issue,再提交PR,避免重复开发;
工具
- 代码格式化:
composer cs-fix
- 静态检查:
composer php-stan
- 测试与覆盖:
composer unit-test
,命令运行后会在项目创建的coverage
目录下生成报告 - function-apis文档生成:
- 使用
composer doc-install
或自行安装phpDocumentor - 在项目根目录使用
phpDocumentor
生成文档
- 使用
♨️ 相关文章
💕 致谢
💕感恩 workerman 和 swow 开发团队为 PHP 社区带来的创新和卓越贡献,让我们共同期待 PHP 在实时应用领域的更多突破!!!