安装 Workerman

安装 Workerman

hi,我是温新,一名 PHPer

安装扩展

安装 workerman 之前,先安装如下扩展:

pcntl

posix

event(可选,建议安装安装)

怎么安装这些扩展就不介绍了,官方文档有教程。

安装 Workerman

Workerman 是一个扩展包,因此,composer 下来就是安装完成。

$ mkdir wm-study && cd wm-study

$ composer require workerman/workerman

这样,Workerman 就已经安装好了。

Workerman 简单案例

打开下载下来的 Workerman 一看,有点蒙圈,怎么使用?下载下来后,一切功能的实现都需要我们自己去写了。

1)创建启动程序的文件

根目录下创建 test-start.php,内容如下:

// wm-study/test-start.php

use Workerman\Worker;

use Workerman\Connection\TcpConnection;

use Workerman\Protocols\Http\Request;

require_once __DIR__ . '/vendor/autoload.php';

$web = new Worker('http://0.0.0.0:8888');

$web->onMessage = function (TcpConnection $connection, Request $request) {

$connection->send('

Hello Workerman

');

};

Worker::runAll();

2)启动服务

$ php test-start.php start

3)测试服务

$ curl 127.0.0.1:8888

Hello Workerman

当然了,也可以使用浏览器来访问查看效果。

Workerman 中的两大类

Connection 类

Connection 类用于客户端的连接,每一个客户端连接都对应了一个 Connection 对象。可以设置该对象的 onMessage、onClose 等回调,同时提供了向客户端发送数据 send 接口与关闭连接 close 接口,以及其它一些必要的接口

Worker 类

Worker 类用于实现端口的监听,并可以设置客户端连接事件、连接上消息事件、连接断开事件的回调函数,从而实现业务处理。

总结下来,就是 Connection 负责客户端连接,Worker 类负责工作。

Workerman 目录结构

为了避免偷懒,还是来了解一下 Workerman 文件的相关作用吧。

Workerman // workerman内核代码

├── Connection // socket连接相关

│ ├── ConnectionInterface.php// socket连接接口

│ ├── TcpConnection.php // Tcp连接类

│ ├── AsyncTcpConnection.php // 异步Tcp连接类

│ └── UdpConnection.php // Udp连接类

├── Events // 网络事件库

│ ├── EventInterface.php // 网络事件库接口

│ ├── Event.php // Libevent网络事件库

│ ├── Ev.php // Libev网络事件库

│ ├── Swoole.php // Swoole网络事件库

│ └── Select.php // Select网络事件库

├── Lib // 常用的类库

│ ├── Constants.php // 常量定义

│ └── Timer.php // 定时器

├── Protocols // 协议相关

│ ├── ProtocolInterface.php // 协议接口类

│ ├── Http // http协议相关

│ │ ├── Chunk.php // http chunk类

│ │ ├── Request.php // http 请求类

│ │ ├── Response.php // http响应类

│ │ ├── ServerSentEvents.php // SSE类

│ │ ├── Session

│ │ │ ├── FileSessionHandler.php // session文件存储

│ │ │ └── RedisSessionHandler.php // session redis存储

│ │ ├── Session.php // session类

│ │ └── mime.types // mime映射文件

│ ├── Http.php // http协议实现

│ ├── Text.php // Text协议实现

│ ├── Frame.php // Frame协议实现

│ └── Websocket.php // websocket协议的实现

├── Worker.php // Worker

├── WebServer.php // WebServer

└── Autoloader.php // 自动加载类

🎨 相关创意作品

奇珍异宝
365bet线路检测

奇珍异宝

📅 07-03 👁️ 3155
「即时设计」:无需下载的网页版Photoshop入口
365速发国际是黑平台吗

「即时设计」:无需下载的网页版Photoshop入口

📅 07-16 👁️ 5016
主播注意啦 蘑菇街新增 主播DSR动态评分规则
365速发国际是黑平台吗

主播注意啦 蘑菇街新增 主播DSR动态评分规则

📅 07-07 👁️ 8799