Workerman - 高性能的PHP socket框架
WorkerMan是一款纯PHP开发的开源的高性能的PHP socket服务器框架,基于WorkerMan开发者可以开发出各种网络服务器,即时IM通讯,游戏服务器通讯,与硬件传感器通讯等等,开发这些应用程序我们无法直接使用nginx/apache + PHP来实现,几乎任何基于TCP/UDP通讯的服务端都可以用WorkerMan来开发。WorkerMan使得开发者摆脱PHP只能用于Web开发的束缚,向更广阔的前景发展。
特性
- 纯 PHP开发
- 支持PHP多进程
- 支持TCP、UDP
- 支持长连接
- 支持各种应用层协议
- 支持高并发
- 支持服务平滑重启
- 支持文件更新检测及自动加载
- 支持以指定用户运行子进程
- 支持对象或者资源永久保持
- 高性能
- 支持HHVM
- 支持分布式部署
- 支持守护进程化
- 支持多端口监听
- 支持标准输入输出重定向
安装配置
1.pcntl扩展
pcntl 扩展是 PHP 在 Linux 环境下进程控制的扩展
2.posix扩展
posix扩展使得PHP在Linux环境可以调用系统通过POSIX标准提供的接口
3.libevent扩展 或者 Event扩展
libevent扩展(或者event扩展)使得PHP可以使用系统Epoll、Kqueue等高级事件处理机制,能够显著提高WorkerMan在高并发连接时CPU利用率。在高并发长连接相关应用中非常重要。(非必要安装,默认使用PHP 原生 Select 事件处理机制)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Workerman // workerman内核代码 ├── Connection // socket连接相关 │ ├── ConnectionInterface.php// socket连接接口 │ ├── TcpConnection.php // Tcp连接类 │ ├── AsyncTcpConnection.php // 异步Tcp连接类 │ └── UdpConnection.php // Udp连接类 ├── Events // 网络事件库 │ ├── EventInterface.php // 网络事件库接口 │ ├── Libevent.php // Libevent网络事件库 │ ├── Ev.php // Libev网络事件库 │ └── Select.php // Select网络事件库 ├── Lib // 常用的类库 │ ├── Constants.php // 常量定义 │ └── Timer.php // 定时器 ├── Protocols // 协议相关 │ ├── ProtocolInterface.php // 协议接口类 │ ├── Http // http协议相关 │ │ └── mime.types // mime类型 │ ├── Http.php // http协议实现 │ ├── Text.php // Text协议实现 │ ├── Frame.php // Frame协议实现 │ └── Websocket.php // websocket协议的实现 ├── Worker.php // Worker ├── WebServer.php // WebServer └── Autoloader.php // 自动加载类
|
可用协议
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| // http协议 $worker1 = new Worker('http://0.0.0.0:1221'); // websocket协议 $worker2 = new Worker('websocket://0.0.0.0:1222'); // text文本协议(telnet协议) $worker3 = new Worker('text://0.0.0.0:1223'); // frame文本协议(可用于二进制数传输) $worker3 = new Worker('frame://0.0.0.0:1223'); // 直接基于tcp传输 $worker4 = new Worker('tcp://0.0.0.0:1224'); // 直接基于udp传输 $worker5 = new Worker('udp://0.0.0.0:1225'); // 还可以自己定制协议 // 使用telnet测试
|