1. ZYS高性能服務(wù)框架

        聯(lián)合創(chuàng)作 · 2023-09-30 04:55

         

        核心特性

        1.基于swoole提供分布式服務(wù)器通訊服務(wù)
        2.基于thrift提供rpc遠(yuǎn)程調(diào)用服務(wù)
        3.基于HTML5提供在線網(wǎng)絡(luò)直播平臺服務(wù)
        4.基于swoole提供同步異步數(shù)據(jù)庫連接池服務(wù)
        5.基于swoole提供異步任務(wù)服務(wù)器
        6.基于vmstat提供服務(wù)器硬件實(shí)時監(jiān)控服務(wù)
        7.基于yac、yaconf提供共享數(shù)據(jù)、配置服務(wù)
        8.基于zqf提供高并發(fā)計數(shù)器、紅包、二維碼服務(wù)
        9.很好的支持網(wǎng)頁版console的shell服務(wù)

        服務(wù)啟動

        需要php以cli模式運(yùn)行/server/server.php
            php server.php start
            php server.php stop
            php server.php restart

        composer 安裝

        {
                "require": {
                    "qieangel2013/zys": "0.1.4"
             }
        }

        分布式服務(wù)器通訊服務(wù)

        建立多個服務(wù)器之間進(jìn)行數(shù)據(jù)通信服務(wù),服務(wù)自動連接在線服務(wù)器,支持熱拔,啟動服務(wù)后自動連接,無需人為干預(yù)
        注意事項:
            需要在conf/application.conf里配置端口和監(jiān)聽、日志等
            需要有一個redis服務(wù)器,并且分布式服務(wù)器都能連接redis
            web端可以直接調(diào)用服務(wù)
            使用如下
            //注意:type為sql、file,要是需要別的功能,自己定義
                if($_FILES){
                //數(shù)據(jù)同步
                $sql = array('type'=>'sql','data'=>'show tables');
                var_dump(distributed::getInstance()->query($sql));
                //文件同步(不用安裝rsync+notify就可以實(shí)現(xiàn)文件同步,并且是觸發(fā)式的占用很小的資源,調(diào)用sendfile零復(fù)制)
                    $dir_pre=MYPATH.'/public/uploads/';
                    if(!is_dir($dir_pre.date('Ymd'))){
                        mkdir($dir_pre.date('Ymd'),0777,true);
                 }
                    if(is_uploaded_file($_FILES['file']['tmp_name'])){ 
                    $upname=explode('.',$_FILES['file']['name']);
                    $filename=uniqid().substr(time(),-4).'.'.$upname[1];
                    if(move_uploaded_file($_FILES['file']['tmp_name'],$dir_pre.date('Ymd').'/'.$filename)){  
                        echo "Stored in: " . $dir_pre.date('Ymd').'/'.$filename; 
                        $fileinfo = array('type'=>'file','data'=>array('path' =>'/public/uploads/'.date('Ymd').'/'.$filename,'size'=>$_FILES['file']['size'],'ext'=>$upname[1]));
                        var_dump(distributed::getInstance()->queryfile($fileinfo));
                        }else{  
                            echo 'Stored failed:file save error';  
                        }  
                    }else{
                    echo 'Stored failed:no post ';  
                }
            }
                本地訪問:http:/localhost/index/distributed/
                架構(gòu)圖

        執(zhí)行結(jié)果如下 

        thrift的rpc遠(yuǎn)程調(diào)用

        本地訪問http://localhost/index/rpc (返回0表示成功)

        數(shù)據(jù)庫連接池使用方法

        服務(wù)文件在/server/mysql/DbServer.php
        簡單地封裝文件在/application/library/mysql/dbclient.php
        配置在conf/application.ini中
        ;數(shù)據(jù)庫連接池配置
        DbServer.async=true   //配置是同步執(zhí)行還是異步執(zhí)行,默認(rèn)不配置代表異步執(zhí)行,同步執(zhí)行設(shè)置為false
        DbServer.multiprocess=false //配置是否啟用多進(jìn)程,默認(rèn)不配置代表單進(jìn)程阻塞模式,多進(jìn)程模式要設(shè)置為true
        DbServer.pool_num=20  //配置連接池mysql的數(shù)量
        DbServer.port=9501
        DbServer.logfile="/server/log/DbServer.log"
        DbServer.localip="192.168.2.13"
        使用方法:
        $dbclient=new mysql_dbclient;
            //print_r($data);
            for ($i=0; $i <100 ; $i++) { 
                $dbclient->query("INSERT INTO user(name) VALUES('$i')");
                //echo "INSERT INTO user(name) VALUES('$i')";
            }
            $data=$dbclient->query("select * from user");
            $dbclient->close();
            print_r($data);
            exit;
            本地訪問:http:/localhost/index/dbtest/

        數(shù)據(jù)庫連接池多進(jìn)程執(zhí)行如下

        swoole實(shí)現(xiàn)簡單的視頻直播(可以實(shí)時傳音頻、視頻、聊天)

        錄制視頻頁面 http://localhost/index/swoolelivecamera
        接受視頻頁面 http://localhost/index/swoolelive

        vmstat服務(wù)器監(jiān)控

        本地訪問http://localhost/vmstat/
        執(zhí)行如下:

        yac、yaconf提供共享數(shù)據(jù)、配置使用如下

        需要安裝php擴(kuò)展yac、yaconf
        //注意:需要安裝yaconf擴(kuò)展,并且yaconf.directory=/tmp/yaconf 必須在php.ini里設(shè)置,不能動態(tài)加載
            echo Yaconf::get("conf.zqf");
            //注意:需要安裝yac擴(kuò)展,用于存儲共享變量,下面的實(shí)例作為高并發(fā)計數(shù)器
            $yac = new Yac();
            $count=$yac->get('zqf');
            if(!$count){
                $yac->set('zqf', 1);
            }else{
                $yac->set('zqf', $count+0.5);
            }
            echo $count;

        高并發(fā)計數(shù)器、紅包、二維碼使用如下

        需要安裝php擴(kuò)展zqf
        首先安裝php擴(kuò)展zqf.so
        phpize來安裝
        然后在php文件調(diào)用
        dl('zqf.so');或者phpini里加載([https://github.com/qieangel2013/zqf)
        $obj=new zqf();
        $counter= $obj->autoadd(0,1,0);(聲明只針對多線程)
        echo $counter;
        紅包第一個參數(shù)是紅包總額,第二個人參數(shù)紅包數(shù)量,第三個參數(shù)默認(rèn)代表拼手氣紅包,設(shè)置為1的話為普通紅包
        拼手氣紅包
        $hongb= $obj->hongbao(10,8);或者$hongb= $obj->hongbao(10,8,0);返回數(shù)組為Array ( [0] => 1.33 [1] => 1.02 [2] => 1.28 [3] => 0.44 [4] => 1.37 [5] => 0.81 [6] => 1.81 [7] => 1.94 )
        普通紅包,每個人數(shù)額一樣設(shè)置第三個參數(shù)
        $hongb= $obj->hongbao(10,8,1);返回數(shù)組為Array ( [0] => 1.25 [1] => 1.25 [2] => 1.25 [3] => 1.25 [4] => 1.25 [5] => 1.25 [6] => 1.25 [7] => 1.25 )
        var_dump($hongb);
        $obj->savefile('https://www.baidu.com/s?wd=昌平香堂','./test.png',500);第一個參數(shù)是url,第二參數(shù)是保存路徑,第三個參數(shù)是二維碼長或者寬
        $obj->savefile('https://www.baidu.com/s?wd=昌平香堂','./test.png',500,1);第一個參數(shù)是url,第二參數(shù)是保存路徑,第三個參數(shù)是二維碼長或者寬,第四個參數(shù)是決定是否透明,默認(rèn)是不透明的

        網(wǎng)頁版console的shell使用如下

        本地訪問http://localhost/console

        交流使用

        zys框架交流群:337937322

        License

        Apache License Version 2.0 see http://www.apache.org/licenses/LICENSE-2.0.html

         

        瀏覽 44
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報
          
          

            1. 国产黄片视频免费观看 | 99re热re在线视频 | 波多野吉衣高清无码 | 俺去啦视频 | 国产又粗又猛又爽又黄的视频蜜蜜 |