PHP socket 服务器框架集

1.Swoole:重新定义PHP

PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。
Swoole可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能家庭等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。

 

 

2.workerman

workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。

workerman的目标是让PHP开发者更容易的开发出基于socket的高性能的应用服务,而不用去了解PHP socket以及PHP多进程细节。 workerman本身是一个PHP多进程服务器框架,具有PHP进程管理以及socket通信的模块,所以不依赖php-fpm、nginx或者apache等这些容器便可以独立运行。

 

3.Mpass – PHP做Socket服务的解决方案

一般很少有用PHP做服务的, 但是如果你的已有业务逻辑都是PHP实现的, 而现在却需要基于已有的业务逻辑提供一套Socket服务, 怎么办?

当然, 解决方法很多, 但最简单的办法, 还是直接使用PHP做Socket服务.

而这样做要解决的问题有很多, 主要要解决的问题有如下几个:

  1. 1. 作为后台服务,需要常驻后台运行, 那么丁点的内存泄露都是不能接受的.
  2. 2. 作为后台服务,畸形数据导致进程异常退出, 也是不可接受的.
  3. 3. 作为后台服务, 要能做到graceful restart.
  4. 4. 作为后台服务, 对资源的使用必须在可接受的范围以内.

最近,我就基于PHP的pcntl扩展实现一个简单的提供Socket服务的框架. 取其名为Mpass(Multi-Processes Socket Server).

主要结构如下:

Mpass

 

我之前的文章PHP CLI模式下的多进程应用介绍过在PHP做服务的时候如何避免内存泄露, 所以基于此, 再加上PHP5以后的stream_socket_*系列API, 就完成了这一套框架.

至于Graceful restart, 通过pcntl_signal函数, 在接受到restart/shutdown信号时刻, 做关闭清理动作, 保证不会因为重启/关闭而使得正在执行的逻辑出错.

有类似需求的朋友, 可以借鉴.

项目地址&下载地址 : Mpass

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。