【workbunny】协程基建

1.1.5 版本
2024-10-14 版本更新时间
67 安装
55 star

Webman Coroutine Infrastructure Suite Compatible with Workerman.

Build StatusCodecovLatest Stable VersionPHP Version RequireLicense

简介

🚀🐇 webman-coroutine 是一个支持 workerman / webman 开发框架生态下的协程基建支撑插件

起源

  • workerman 4.x 及基于其作为运行容器的 webman 框架不支持协程
  • workerman 5.x 及基于其作为运行容器的 webman 框架不具备完备的协程能力
  • workerman / webman 没有一个较为统一的协程使用方式,导致切换协程驱动的开发成本较高,试错成本较高
  • 自行实现协程版worker、server开发成本较高,试错成本较高

workbunny/webman-coroutine 插件诞生缘由及协程开发分享

目的

愿景

  1. 在 workerman/webman 开发环境下,提供一套简单的协程工具包,降低心智负担。
  2. 在 workerman/webman 开发环境下,尝试实现一套兼容协程与非协程开发的方案,让方案选择和方案逃离更简单,避免更多的焦虑。
  3. 在 workerman/webman 开发环境下,尽可能实现对官方组件的非侵入的协程化改造(虽然很难,但也想试试)
  4. 希望在代码的实现上能够给更多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 在实时应用领域的更多突破!!!

赞助商