workerman的可以开启多个worker进程,主进程用于管理开启的worker进程。每个worker进程可以与客户端独立通信。
workerman是常驻内存的。
Composer安装:

composer require workerman/workerman
Linux系统可以利用以下脚本测试本机PHP环境是否知足WorkerMan运行哀求。
curl -Ss https://www.workerman.net/check | php
workerman的项目构造
Connection:存放关于连接干系的类,有tpc和udp类
Event:存放事宜干系的类
Lib:存放的是工具干系的类,例如定时器类
Protocols:存放协议干系的类,例如ws协议
worker.php:worker进程类
workerman的启动与停滞启动
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
查看连接状态
php start.php connections
workerman通讯协议WorkerMan目前已经支持HTTP、websocket、text协议、frame协议,ws协议,利用方法是在初始化Worker对向时指定协议。
例如:
$websocket_worker = new Worker('websocket://0.0.0.0:2345');
Work类work类用于设置监听端口、事宜处理和进程数等的紧张类。
紧张属性
count:设置当前Worker实例启动多少个进程
connections:存储了当提高程的所有的客户端连接工具。
回调属性:
onConnect:建立连接时
onMessage:收到数据时
onClose:断开时
onError:缺点时
Connection类每个客户端连接对应一个Connection工具
常用属性
id:连接的id,可以重新赋值
回调属性
onMessage:当前连接收到时
onClose:当前连接关闭时
onError:当前连接缺点时
方法
send:向客户端发送数据
close:关闭连接
Timer定时器类方法:
add:创建新的定时器
del:删除定时器
心跳心跳的目的时保持客户端与做事器真个连接,永劫光没有通信回断开连接。
断线重连只能客户端做。
workerman大略的例子<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// 把稳:这里与上个例子不同,利用的是websocket协议
$ws_worker = new Worker("websocket://0.0.0.0:2000");
// 启动4个进程对外供应做事
$ws_worker->count = 4;
// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{
// 向客户端发送hello $data
$connection->send('hello ' . $data);
};
// 运行worker
Worker::runAll();