# 心跳检测程序
## 官方文档
https://www.workerman.net/doc/workerman/faq/heartbeat.html
~~~
<?php
require_once 'workerman/Autoloader.php';
require_once 'workerman/Lib/Timer.php';
use Workerman\Worker;
use Workerman\Timer;
$worker = new Worker('text://0.0.0.0:2222',);
//当客户端发来信息的时候 设置一个 lastMessageTime临时属性 记录时间
$worker->onMessage=function ($connection,$data) {
$connection->lastMessageTime=time();
};
//子进程启动时候记录时间,也就是链接的时候
//$worker->connections 此属性中存储了当前进程的所有的客户端连接对象,其中id为connection的id编号
$worker->onWorkerStart=function ($worker){
Timer::add(1,function ()use($worker){
$now_time=time();
//$conn 此属性中存储了当前进程的所有的客户端连接对象
foreach ($worker->connections as $conn){
if(empty($conn->lastMessageTime)){
$conn->lastMessageTime=$now_time;
}
//判断如果大于10秒未有信息将会断开
if($now_time-$conn->lastMessageTime>10){
$conn->close("长时间未连接断开");
}
}
});
};
Worker::runAll();
~~~
- WebSocket协议
- 构造函数(6种协议)
- count(进程设置)
- name(链接名称)
- $daemonize(守护进程设置)
- logFile(日志路径)
- stdoutFile(守护进程记录文件)
- connections(获取链接数组的)
- worker的回调属性
- worker类的方法
- Connection类的方法
- getRemotePort获取端口方法
- getRemoteIp获取IP地址
- close 安全关闭连接
- 定时器
- Channel分布式通信组件
- 心跳检测程序
- liunx优化配置
- thinkphp5.1使用worerman
- thinkphp5.1中用Channel实现广播通信
- thinkphp5.1中使用定时器
- thinkphp5.1使用TcpConnection类
- Gateway类使用
- BusinessWorker使用
- Register类的使用
- Events类使用(业务逻辑层)
- Lib\Gateway 接口(经常用)
- webman中间件stomp
- Gateway在thinkphp5.1里使用