当前位置: 首页 > 软件库 > 开发工具 > PHP开发工具 >

Wind Framework

PHP 协程框架
授权协议 Apache
开发语言 PHP
所属分类 开发工具、 PHP开发工具
软件类型 开源软件
地区 国产
投 递 者 韩耘豪
操作系统 Linux
开源组织
适用人群 未知
 软件概览

        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

Composer 包:https://packagist.org/packages/wind-framework/

  • 近日有网友反映在windows10_64位系统电脑上安装Net framework3.5,操作时总失败,怎么办呢?小编下面就介绍win10 64位系统无法安装Net framework3.5的两种解决方案吧 在Windows10中,当我们安装某些软件的时候会提示“你的电脑上的应用需要使用以下Windows功能:.NET Framework 3.5(包括.NET 2.0和3.0)”。这时就需要大家

  • 最近笔者在研究PowerShell DSC, 我们知道PowerShell DSC是PowerShell的一部分,而PowerShell又是WMF(Window Management Framework)Window管理框架的一部分。网上用Window管理框架百度了一下,搜索的结果很少;现在给大家科普一下,截止2017年1月9日,当前的最新正式发布版本是WMF5.0。 而最新的WMF5.1 还在处

  • 我的电脑是重做的系统,在安装postman的时候发现电脑缺少很多东西 一、无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上 下载kernel32.dll,如果电脑已经有这个文件,把这个文件删除或者修改为kernul32.dll.bak,如果修改名称提示权限问题的话,右键-》属性-》安全-》持有者,修改持有者还有持有者权限就可以了 二、已处

 相关资料
  • 与子程序(或者说函数)一样,协程(coroutine)也是一种程序组件。Donald Knuth 曾说,子程序是协程的特例。 一个子程序就是一次函数调用,它只有一个入口,一次返回,调用顺序是明确的。但协程的调用和子程序则大不一样,协程允许有多个入口对程序进行中断、继续执行等操作。 Python2 可以通过 yield 来实现基本的协程,但不够强大,第三方库 gevent 对协程提供了强大的支持。另

  • Tornado 中推荐用 协程 来编写异步代码. 协程使用 Python 中的关键字 yield 来替代链式回调来实现挂起和继续程序的执行(像在 gevent 中使用的轻量级线程合作的方法有时也称作协程, 但是在 Tornado 中所有协程使用异步函数来实现的明确的上下文切换). 协程和异步编程的代码一样简单, 而且不用浪费额外的线程, . 它们还可以减少上下文切换 让并发更简单 . Exampl

  • defer 协程客户端的对象结构体,设置client->defer = 1表示启用了defer延迟收包 设置client->defer_yield = 1表示进入了wait状态 事件监听 因为swoole底层的EventLoop总是在运行的,因此可能某个协程客户端没有yield也会收到包。底层需要对数据进行缓存。 Client 自动保存到ccp->result内存中。为了避免收到的数据过多,导致内

  • 概念 Hyperf 是运行于 Swoole 4 的协程之上的,这也是 Hyperf 能提供高性能的其中一个很大的因素。 PHP-FPM 的运作模式 在聊协程是什么之前,我们先聊聊传统 PHP-FPM 架构的运作模式,PHP-FPM 是一个多进程的 FastCGI 管理程序,是绝大多数 PHP 应用所使用的运行模式。假设我们使用 Nginx 提供 HTTP 服务(Apache 同理),所有客户端发起

  • Python的协程很像生成器,但并不是生成数据,大多数时候扮演了数据消费者的作用。换句话说,协程是一个在每次使用send方法发送数据后就会被唤醒的函数。 协程的要点是将“yield”关键字写在表达式的右边。下面是一个打印出所发送的值的协程例子: def coroutine(): print('My coroutine') while True: val = yiel

  • 就一个简单实现的语言来说,如果有并发需求,像之前说的直接使用宿主环境的线程,加上必要的调度控制即可实现需求,但如果要求比较高,触发到上篇讲的线程和单线程异步的相关缺陷,一个较普遍的解决办法是采用用户态并发,即对于os内核来说,进程只有一个或少数几个线程,而对于源语言来说,接口和使用线程别无二致,由虚拟机实现对这些“线程”的调度,虚拟机的实现则可以一定程度简化、优化调度算法和内存占用,从而达到高并发

  • 协程,又称微线程,纤程。英文名Coroutine。 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。 所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。 子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和

  • 在学习异步IO模型前,我们先来了解协程。 协程,又称微线程,纤程。英文名Coroutine。 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。 所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。 子程序调用总是一个入口,