2、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
,内容如下:
<?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('<h1>Hello Workerman</h1>');
};
Worker::runAll();
2)启动服务
$ php test-start.php start
3)测试服务
$ curl 127.0.0.1:8888
<h1>Hello Workerman</h1>
当然了,也可以使用浏览器来访问查看效果。
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 // 自动加载类
请登录后再评论