<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          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ù)器硬件實時監(jiān)控服務(wù)
          7.基于yac、yaconf提供共享數(shù)據(jù)、配置服務(wù)
          8.基于zqf提供高并發(fā)計數(shù)器、紅包、二維碼服務(wù)
          9.很好的支持網(wǎng)頁版console的shell服務(wù)

          服務(wù)啟動

          需要php以cli模式運行/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就可以實現(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實現(xiàn)簡單的視頻直播(可以實時傳音頻、視頻、聊天)

          錄制視頻頁面 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ò)展,用于存儲共享變量,下面的實例作為高并發(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
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲国产另类无码日韩 | 天天高清无码 | 奸女人穴BB | 一级日韩在线观看 | 五楼自拍 |