Wind FrameworkPHP 协程框架
Wind Framework 是一款纯 PHP 的协程框架,适用于高并发的 Web、Rest 接口、后端服务、任务处理等等。
基于此框架,可以使用纯 PHP 做到一个完全自足型的 PHP 程序。
传统的 php-fpm 做法,PHP 的应用场景非常有限,很多功能需要依赖周边工具做到,比如计划任务通过 crontab 来设置,消息队列可能以计划任务每分钟启动来执行,或通过进程的守护 Supervisord 来做一个很拙劣的长驻,基于对于数据库之类的连接数暴涨也要使用一些中间件,还有很多场景甚至是束手无策或者实现非常之差,php-fpm 碰到高并发时,实际并发数受到进程数的限制,想要把并发数做大实际付出也非常之大,所以往往企业规模做大,或者业务场景复杂之后都要引入其它语言的方案,这表面上是因为其它语言的生态问题,核心还是因为其它语言支持多线程或协程这两个重要的特性。
而基于纯 PHP 的协程框架,PHP 可以用相对非常少的资源实现以上的这些功能。
该框架是基于两个最重要的库实现的。
-
Workerman 提供了 Socket 服务器、客户端,进程管理,Channel 等基础组件。
-
Amphp 提供了纯 PHP 的协程实现,以及协程的 MySQL、Http 客户端等等。
目前框架拥有以下组件:
-
HTTP 服务器(支持基于控制器路由的动态程序和静态文件)
-
依赖注入
-
缓存(实现 PSR-16 SimpleCache 的协程缓存)
-
进程信息收集组件
-
定时任务组件
-
协程 MySQL 客户端、支持连接池、查询构造器
-
日志组件(基于 MonoLog,支持异步写入)
-
自定义进程组件
-
异步消息队列组件(支持 Redis、Beanstalk 作为驱动)
-
协程 Redis 客户端
-
TaskWorker(可将同步调用发到其它进程为异步调用)
-
视图组件(支持 Twig 等多种实现)
PHP 从 7.0 开始大幅度提升了 PHP 的性能,从 8.0 开始又加入了 JIT 又能够大大提升程序的运算性能,这些性能的提升对于传统的 php-fpm 意义并不是很大,应用在长驻式的协程框架中才能把威力彻底发挥出来。
而根据目前的 PHP 相关讨论和提案,很可能会在 8.1版本开始引入官方的协程实现基础。到时候 Wind-Framework 也会及时跟进。
Wind-Framework GitHub 地址:https://github.com/wind-framework