安装:
pecl install swoole
多线程:
<?php // 1. 使用命名空间 use Swoole\Runtime; // 2. 开启协程 Runtime::enableCoroutine(); // 3. 定义数据 $data = array(); for($i = 0;$i < 10000;$i ++){ array_push($data,$i); } // 4. 定义 10 个协程 $thread = 10; for($j = 0;$j < $thread;$j ++){ // 5. 使用协程 go(function() use(&$data){ while ($item = array_pop($data)){ // todo ... } }); }
长链接:
- 服务端:
<?php // 1. 创建 websocket 对象 $obj = new swoole_websocket_server('0.0.0.0',9502); // 2. 监听连接开始事件 $obj->on('open',function($ws,$request){ echo 'ID:'; echo $request->fd; echo '请求头:'; var_dump($request->server); $ws->push($request->fd,'服务端连接开始'); }); // 3. 监听接收消息事件 $obj->on('message',function($ws,$frame){ swoole_timer_tick(10000,function () use($ws,$frame){ $ws->push($frame->fd,'服务端心跳检测'); }); echo '客户端消息:'; echo $frame->data.PHP_EOL; $ws->push($frame->fd,'服务端消息'); }); // 4. 监听消息结束事件 $obj->on('close',function($ws,$fd) { echo 'ID:'; echo $fd; $ws->push($fd,'服务端消息结束'); }); // 5. 启动服务 $obj->start();
- 客户端:
- 文件地址:
http://file.job520.net/other/swoole/WebSocketClient.php
- 用法:
<?php // 1. 包含文件 require_once 'WebSocketClient.php'; // 2. 实例化客户端 $client = new WebSocketClient('127.0.0.1', 9502); // 3. 建立连接 $client->connect(); // 4. 发送消息 $client->send('我是客户端');
- 文件地址:
- 服务端:
文档更新时间: 2024-04-20 10:57 作者:lee