熊超/swoole-monitor

PHP 网络框架与应用服务器。

v1.1 2017-12-26 09:16 UTC

This package is auto-updated.

Last update: 2024-09-26 20:28:03 UTC


README

swoole-monitor-master

功能

  • 私有协议接口,用于推送消息、接收上报消息如主机健康信息上报等

安装

PHP版本要求:PHP5.4/PHP5.5/PHP5.6/PHP7.0/PHP7.1,不支持PHP5.3

  • git安装

git clone https://github.com/xiongchao123/swoole-monitor-master.git

  • composer安装

composer create-project xiongchao/swoole-monitor

安装PHPswoole扩展:pecl install swoole

或访问swoole官网获取安装帮助

Swoole版本请选用1.8.1以上版本。

实现

  • 服务端基于swoole+redis实现
  • 客户端传输正确的协议头,即可与master端建立通信
  • 传入不同的消息类型,master端对其进行处理

使用方法

  • 配置文件swoole.ini用于配置swoole协议参数
    ;swoole server config set
    [server]
    host = 0.0.0.0   ;监听的网络地址
    port = 9503      ;监听的端口
    process_title=monitor_master  ;自定义设置进程名称,可为空 windows&macos下不支持
    ;swoole执行脚本文件名 位于app/Serve/scripts 目录下
    script_path=Swoole.php
    
    [server2]
    host = 0.0.0.0
    port = 9504
    process_title=monitor_master2
    script_path=Swoole.php

  • 全局配置文件如数据库、redis等连接信息位于/config/目录下,可通过config("")方法获取变量值。如config("database.redis")获取redis连接配置。
  • 通过脚本artisan.php进行进程管理。操作包括start|stop|restart|reload|status等。
  • php artisan.php --help 或者-h 可查看命令帮助,php artisan.php --help
  • php artisan.php list 可查看命令列表

运行

开启服务:

  • 启动所有服务
tcp:serve为自定义的命令名称,--daemon为可选参数(在 start、restart和reload的时候可加),默认为false,设置为true的时候进程以守护进程模式启动
php artisan.php tcp:serve start --daemon=true
测试结果如下:
[server] 服务启动成功,进程ID: 21836
[server2] 服务启动成功,进程ID: 21845

php artisan.php tcp:serve stop
测试结果如下:
[server]服务进程ID:21836,已停止
[server2]服务进程ID:21845,已停止

...
  • 启动单个服务
tcp:single为自定义的命令名称,--option为并填参数,可为start|stop|restart|reload|status,--serve为并填参数,为配置文件swoole.ini中的section值,--daemon为可选参数(在 start、restart和reload的时候可加),默认为false,设置为true的时候进程以守护进程模式启动
php artisan.php tcp:single --option=start --serve=server --daemon=true
测试结果如下:
[server] 服务启动成功,进程ID: 21836

php artisan.php tcp:single --option=stop --serve=server 
测试结果如下:
[server]服务进程ID:21836,已停止

...

测试服务

  • 查看服务运行状态
php artisan.php tcp:serve status

php artisan.php tcp:single --option=status --serve=server 
  • 测试服务通讯是否正常
模拟接收推送数据
php App/Client/PushClientTest.php
模拟上报数据(本例将上报数据推送给接收推送的所有客户端)
php App/Client/ReportClientTest.php

测试服务端接口协议

通信协议为长连接,字节流,包含消息头和消息体两部分

消息头定义表