登录  /  注册

Swoole 高性能php框架

不言
发布: 2018-04-24 16:35:40
原创
2385人浏览过

这篇文章主要介绍了关于Swoole 高性能php框架,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

之前学习过了, nodejs ,性能强大。

今年的目标是深入workman,和运用swool 。之前用workman去处理聊天系统,工作需要是在window上运行的。 所以性能来说,没有发挥workman的有的优势。

在这个月中, 刚好项目需要,运用swoole开发了,微信小程序商城的客服聊天系统的接口。

通过微信官方提供的接口,实现客户和客服的聊天。

这里写图片描述

利用swoole 能轻松的搞定websocket,在线聊天。

发消息给指定用户的前提

当一个客户端链接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);
}
登录后复制

基础异步模板

面向对象类

<?phpclass WebsocketTest {
    public $server;    public function __construct() {
        $this->server = new swoole_websocket_server("0.0.0.0", 7272);        
        $this->server->on(&#39;open&#39;,[$this,&#39;open&#39;]);        
        $this->server->on(&#39;message&#39;, [$this,&#39;message&#39;]);        
        $this->server->on(&#39;close&#39;, [$this,&#39;close&#39;]);        
        $this->server->on(&#39;request&#39;, [$this,&#39;request&#39;]);        
        $this->server->on(&#39;task&#39;,[$this,&#39;task&#39;]);        
        $this->server->on(&#39;finish&#39;,[$this,&#39;finish&#39;]);        
        $this->server->set([//            &#39;daemonize&#39;=>true,
        &#39;task_worker_num&#39;=>10,
        ]);        $this->server->start();
    }    //@异步接受数据, 发送数据
    function finish($server, $task_id,$data){
        $server->push($data[&#39;fd&#39;],$data[&#39;data&#39;]);
    }    //@异步处理数据
    function task($server, $task_id, $from_id, $data){
        //接受到数据之后处理复杂逻辑处理
        sleep(&#39;5&#39;);        
        $data[&#39;data&#39;] = &#39;服务器发送&#39;.$data[&#39;data&#39;];        
        $server->finish($data);
    }    
    function request($request, $response) {
        foreach ($this->server->connections as $fd) {            
        $this->server->push($fd, $request->get[&#39;message&#39;]);
        }
    }    function close($ser, $fd) {
        echo "client {$fd} closed\n";
    }    function message(swoole_websocket_server $server, $frame) {
        $data = [            
        &#39;fd&#39;=>$frame->fd,            &#39;data&#39;=>$frame->data,
        ];        
        $server->task($data);
    }    function open( $server, $request) {

    }
}new WebsocketTest();
登录后复制

以上就是Swoole 高性能php框架的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号