workerman是一个高性能的php socket 服务器框架,workerman基于php多进程以及libevent事件轮询库,php开发者只要实现一两个接口,便可以开发出自己的网络应用,例如rpc服务、聊天室服务器、手机游戏服务器等。
workerman的目标是让php开发者更容易的开发出基于socket的高性能的应用服务,而不用去了解php socket以及php多进程细节。 workerman本身是一个php多进程服务器框架,具有php进程管理以及socket通信的模块,所以不依赖php-fpm、nginx或者apache等这些容器便可以独立运行
其中
workerman有两种进程模型
1、基本的master worker模型
2、master gateway worker模型
master worker模型工作流程及进程间关系如下:
master worker模型说明:
master进程为主进程,启动过程中读取conf配置,根据每个应用配置中的ip和端口创建监听socket,然后再根据配置中的进程数创建对应数量的子进程即worker进程,worker进程会自动继承master进程创建的监听socket,使得worker进程能够独立的接受并处理客户端的连接。而后master进程进入监听信号的逻辑中,监听worker进程退出信号(worker进程退出后,系统会自动向master进程发送一个sighcld信号,mater进程会重新创建子进程,将缺失的子进程补上),master进程还会监听workermand脚本发来的停止信号(sigint)和平滑重启服务信号(sighup)
worker进程为master进程派生出来的子进程,自动继承了master进程的监听socket,每个worker进程独立的接受并处理客户端的连接。
master worker模型比较适合业务简单的应用或者短连接应用
master gateway worker模型工作流程和进程间关系如下:
master gateway worker 模型说明:
这种模型多了一个gateway进程组,工作流程与master worker模型基本相同,区别是worker进程不再直接与客户端打交道,客户端与worker进程之间多了一个gateway进程,gateway专职处理网络io,并维护客户端的长连接。
master gateway worker 模型非常适合长连接应用
swoole
swoole是一个面向生产环境的 php 异步网络通信引擎,使 php 开发人员可以编写高性能的异步并发 tcp、udp、unix socket、http,websocket 服务。swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(iot)、车联网、智能家居等领域。 使用 php + swoole 作为网络通信框架,可以使企业 it 研发团队的效率大大提升。
swoole不是一个像zend framework、cakephp、yii、symfony、thinkphp等一样的框架,也不是一个像wordpress、drupal、discuz、uchome等开源产品看齐的项目。 swoole的目标是向java框架、ruby on rails、python djangopylons等一流框架发起挑战。
swoole虽然是标准的php扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。而swoole扩展在运行后会接管php的控制权,进入事件循环。当io事件发生后底层会自动回调指定的php函数。
swoole 底层是纯c 编写,对其他扩展几乎是零依赖,不需要php传统环境做依赖。性能更加强悍,许多国内外大公司都会在swoole的基础上进行二开来满足自己的业务需求。
推荐学习: swoole视频教程
以上就是workman和swoole的区别是什么的详细内容。
