WorkerMan

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

workerman本身是一个PHP多进程服务器框架,具有PHP进程管理以及socket通信的模块,所以不依赖php-fpm、nginx或者apache等这些容器便可以独立运行。

官网地址:https://www.workerman.net

源代码Github地址:https://github.com/walkor/workerman

WorkerMan是什么?

WorkerMan是一款纯PHP开发的开源高性能的PHP socket 服务框架。

Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的socket服务框架,你可以用它开发tcp代理、梯子代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman可以说是PHP领域的一次创新,让开发者彻底摆脱了PHP只能做WEB的束缚。

实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协以及各种自定义协议。拥有定时器、异步socket客户端、异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。

WorkerMan支持的特性

  1. 纯PHP开发,多进程支持,支持php7,支持hhvm
  2. 支持TCP/UDP,单机可支持数百万以上TCP长连接
  3. 支持分布式部署,集群能支持数百万甚至更高的并发TCP连接
  4. 支持libevent事件触发网络库
  5. 支持热更新及服务器平滑重启
  6. 拥有异步Mysql、Redis、Dns等众多高性能组件

Worker原理

Worker是WorkerMan中最基本容器,Worker可以开启多个进程监听端口并使用特定协议通讯,类似nginx监听某个端口。每个Worker进程独立运作,采用Epoll(需要装event扩展)+非阻塞IO,每个Worker进程都能上万的客户端连接,并处理这些连接上发来的数据。主进程为了保持稳定性,只负责监控子进程,不负责接收数据也不做任何业务逻辑。

WorkerMan命令

启动

以debug(调试)方式启动

php start.php start

以daemon(守护进程)方式启动

php start.php start -d

停止

php start.php stop

重启

php start.php restart

平滑重启

php start.php reload

查看状态

php start.php status