计算机系统应用教程网站

网站首页 > 技术文章 正文

workerman入门到使用 workerman教程

btikc 2024-10-12 11:13:23 技术文章 7 ℃ 0 评论

workerman的简介

workerman用于开发网络应用程序,例如websocket服务的网页聊天。

workerman的可以开启多个worker进程,主进程用于管理开启的worker进程。每个worker进程可以与客户端独立通信。

workerman是常驻内存的。

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();

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表