这篇文章主要介绍了关于Swoole 高性能php框架,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
之前学习过了, nodejs ,性能强大。
今年的目标是深入workman,和运用swool 。之前用workman去处理聊天系统,工作需要是在window上运行的。 所以性能来说,没有发挥workman的有的优势。
在这个月中, 刚好项目需要,运用swoole开发了,微信小程序商城的客服聊天系统的接口。
通过微信官方提供的接口,实现客户和客服的聊天。

立即学习“PHP免费学习笔记(深入)”;
利用swoole 能轻松的搞定websocket,在线聊天。
Magento是一套专业开源的PHP电子商务系统。Magento设计得非常灵活,具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。Magento开源网店系统的特点主要分以下几大类,网站管理促销和工具国际化支持SEO搜索引擎优化结账方式运输快递支付方式客户服务用户帐户目录管理目录浏览产品展示分析和报表Magento 1.6 主要包含以下新特性:•持久性购物 - 为不同的
发消息给指定用户的前提
当一个客户端链接socket 的时候, 系统会分配一个fd ,fd 是识别单独的客户端。
在登录的时候,客服端可以发送用户的信息给swoole,包括客服的id。
为了为指定的客户或者群发送消息,把客服id和对应的fd 存入redis。当打开socket时,发送给某个客服的时候,只需要读取redis的客服相应的key就能发送给指定的用户。
异步
虽然现在的咨询量不大, 为了代码的寿命,能用得更久一点, 在客服发送消息的时候,和接受消息的时候加了 task异步。当咨询量大的时候swoole也能游刃有余。
异步存储log
聊天,不像是写文章。可能一秒钟有上万次的咨询量,所以为了能让系统流畅,在不必要耗时操作上,swoole提供异步读写,帮助我们读写log。
function log_text($data){
swoole_async_writefile(__DIR__ . '/log.txt', $data.$data."\n\n", function($filename) {
}, FILE_APPEND);
}基础异步模板
面向对象类
server = new swoole_websocket_server("0.0.0.0", 7272);
$this->server->on('open',[$this,'open']);
$this->server->on('message', [$this,'message']);
$this->server->on('close', [$this,'close']);
$this->server->on('request', [$this,'request']);
$this->server->on('task',[$this,'task']);
$this->server->on('finish',[$this,'finish']);
$this->server->set([// 'daemonize'=>true,
'task_worker_num'=>10,
]); $this->server->start();
} //@异步接受数据, 发送数据
function finish($server, $task_id,$data){
$server->push($data['fd'],$data['data']);
} //@异步处理数据
function task($server, $task_id, $from_id, $data){
//接受到数据之后处理复杂逻辑处理
sleep('5');
$data['data'] = '服务器发送'.$data['data'];
$server->finish($data);
}
function request($request, $response) {
foreach ($this->server->connections as $fd) {
$this->server->push($fd, $request->get['message']);
}
} function close($ser, $fd) {
echo "client {$fd} closed\n";
} function message(swoole_websocket_server $server, $frame) {
$data = [
'fd'=>$frame->fd, 'data'=>$frame->data,
];
$server->task($data);
} function open( $server, $request) {
}
}new WebsocketTest();










