app直播原始碼如何實現直播間紅包功能
紅包功能是app直播原始碼直播間中的重要功能,紅包功能的實現,可以幫助主播快速提高直播間氛圍,讓使用者對直播產生興趣,app直播原始碼可以怎樣實現紅包功能呢?
軟體簡介
yaf專案快速開發(相容php7):
yaf project rapid development, integration of the db action class support chain operation, support separate read and write, pdo, mysqli, mongo, upload operation, adding redis operations and weixin sharing, will then join weixin pay 整合了db操作類支援鏈式操作,支援讀寫分離,pdo,mysqli,mongo,upload操作, 加入redis操作以及微信分享,加入微信支付,加入swoole的支援, 已支援swoole_http_server,swoole_websocket_server,高併發搶購、秒殺,陣列演算法處理等,新增了後臺admin模組,整合表格樹!新增基於swoole的資料庫連線池,支援自定義載入目錄類檔案和函式檔案(透過外掛的形式實現的) 在/application/controllers/Index.php裡新增了yac、yaconf的使用,透過yac實現高併發計數器,加入swoole實現簡單的影片直播,加入了網頁控制檯的實現例如:
swoole實現簡單的影片直播(可以實時傳音訊、影片、聊天)
需要php以cli模式執行/server/swoole/SwooleLiveServer.php 錄製影片頁面 接受影片頁面
composer 安裝
{ "require": { "yaffastdemo/yaf": "dev-master" } }
資料庫連線池使用方法
服務檔案在/server/mysql/DbServer.php 簡單地封裝檔案在/application/library/mysql/dbclient.php 配置在conf/application.ini中 ;資料庫連線池配置 DbServer.async=true //配置是同步執行還是非同步執行,預設不配置代表非同步執行,同步執行設定為false DbServer.multiprocess=false //配置是否啟用多程式,預設不配置代表單程式阻塞模式,多程式模式要設定為true DbServer.pool_num=20 //配置連線池mysql的數量 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;
資料庫連線池多程式執行如下:
後臺訪問:
新增了紅包生成演算法(拼手氣紅包和普通紅包):
需要安裝php擴充套件zqf $obj=new zqf(); 第一個引數是紅包總額,第二個人參數紅包數量,第三個引數預設代表拼手氣紅包,設定為1的話為普通紅包 拼手氣紅包 $hongb= $obj->hongbao(10,8);或者$hongb= $obj->hongbao(10,8,0);返回陣列為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 ) 普通紅包,每個人數額一樣設定第三個引數 $hongb= $obj->hongbao(10,8,1);返回陣列為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);
新增了全域性變數適用於高併發搶購、秒殺,陣列演算法處理等
需要安裝php擴充套件zqf 首先安裝php擴充套件zqf.so phpize來安裝 然後在php檔案呼叫 dl('zqf.so');或者phpini里載入 $obj=new zqf(); $counter= $obj->autoadd(0,1,0);(宣告只針對多執行緒) echo $counter;
新增了分頁類
$Page = new Page($count,$pageoffset); $show = $Page->show();
新增了swoole的task伺服器,並實現拆包處理任務演算法
$task=new swoole_taskclient(); //拆分資料演算法 $count_num_pre=$data['prenum']; $count_num=$data['appendnum']; $count_size=10000;//拆分資料演算法 if($count_num>$count_size){ $z_str=floor($count_num/$count_size); $y_str=fmod($count_num,$count_size); $data['explodenum']=$y_str==0?$z_str:$z_str+1; for ($i=1; $i <$z_str+1 ; $i++) { $data['appendnum']=$count_size; $data['explodecount']=$i; $task->connect(json_encode($data)); $data['prenum'] +=$count_size; } if($y_str){ $data['appendnum']=$y_str; $data['explodecount']=$z_str+1; $task->connect(json_encode($data)); }}else{ $task->connect(json_encode($data)); }
新增了驗證碼類
$config = array( 'fontSize' => 30, // 驗證碼字型大小 'length' => 4, // 驗證碼位數 'useNoise' => true, // 關閉驗證碼雜點 ); $Verify = new Verify($config); $Verify->entry();
新增了生成二維碼功能
需要安裝php擴充套件zqf $obj=new zqf(); $obj->savefile('昌平香堂','./test.png',500);第一個引數是url,第二引數是儲存路徑,第三個引數是二維碼長或者寬
生成透明二維碼
$obj=new zqf(); $obj->savefile('昌平香堂','./test.png',500,1);第一個引數是url,第二引數是儲存路徑,第三個引數是二維碼長或者寬,第四個引數是決定是否透明,預設是不透明的
自定義自動載入配置如下:
;可以任意載入多個目錄類和目錄函式用,隔開 例如:application.autolibrary='job,common';application.autofunction='pro,function' 支援深度查詢目錄,如果不想開啟可以不用配置 application.autolibrary='common' application.autofunction='function' ;如果不想開啟可以不用配置
db操作類讀寫分離配置如下:
;資料庫驅動型別 database.config.type='mysql' ;伺服器地址 database.config.host='192.168.0.1,192.168.0.2' ;資料庫名 database.config.name='root' ;使用者名稱 database.config.user='user1,user2' ;密碼 database.config.pwd='pwd1,pwd2' ;埠 database.config.port= '3306' ;啟用欄位快取 database.config.fields_cache=false ;資料庫編碼預設採用utf8 database.config.charset='utf8' ;資料庫部署方式:0 集中式(單一伺服器),1 分散式(主從伺服器) database.config.deploy_type=1 ;資料庫讀寫是否分離 主從式有效 database.config.rw_separate=true ;讀寫分離後 主伺服器數量 database.config.master_num=1 ;指定從伺服器序號 database.config.slave_no=''
db操作類使用方法如下:
$where=array('id' =>37936); $user=new HbModel('hb_users');//直接例項化給表名就行了,其他跟操作thinkphp一樣 $result=$user->where($where)->select();//支援鏈式操作,支援pdo,mysqli,mongo echo $user->getlastsql(); print_r($result); exit;
redis操作使用方法如下:
$this->_redis=new phpredis();//需要安裝redis擴充套件 $this->_redis->set('token',1);
upload操作使用方法如下:
$config=Yaf_Application::app()->getConfig()->upload->config->toArray(); $ftpconfig=Yaf_Application::app()->getConfig()->ftp->config->toArray(); $upload=new Upload($config, 'Ftp',$ftpconfig); $info=$upload->upload(); if (!$info) {// 上傳錯誤提示錯誤資訊 echo $upload->getError(); } else {// 上傳成功 if (!empty($info["UpLoadFile"])) $pic=array("cate_pic" => $info["UpLoadFile"]['savepath'] . $info["UpLoadFile"]['savename']); print_r($pic); }
微信分享操作使用方法如下:
//微信分享 $jssdk=new wx_share_wxshare("你的appId", "你的appSecret"); $signPackage=$jssdk->GetSignPackage();; $data['appId']=$signPackage['appId']; $data['nonceStr']=$signPackage['nonceStr']; $data['timestamp']=$signPackage['timestamp']; $data['signature']=$signPackage['signature']; $this->getView()->assign("token", json_encode($data));
微信支付操作使用方法如下:(具體操作在weixin控制器裡)
$jsApi = new wx_pay_JsApi(); $oid=123;//訂單id $userid=456;//使用者id $wx_openid='';//微信授權id if(empty($wx_openid)){ if (!isset($_GET['code'])) { $url = wx_pay_config::JS_API_CALL_URL; $url = str_replace('%oid%', $oid, $url); $url = str_replace('%uid%', $userid, $url); $url = $jsApi->createOauthUrlForCode($url); Header("Location: $url"); } else { $code = $_GET['code']; $jsApi->setCode($code); $openid = $jsApi->getOpenId(); } }else{ $openid = $wx_openid; } $unifiedOrder = new wx_pay_UnifiedOrder(); $unifiedOrder->setParameter("body", "test"); //商品描述 $unifiedOrder->setParameter("out_trade_no", "1111111111"); //商戶訂單號 $unifiedOrder->setParameter("total_fee", "0101"); //總金額 $total $unifiedOrder->setParameter("notify_url", wx_pay_config::NOTIFY_URL); //通知地址 $unifiedOrder->setParameter("trade_type", "JSAPI"); //交易型別 $unifiedOrder->setParameter("openid", $openid); //使用者標識 $prepay_id = $unifiedOrder->getPrepayId(); $jsApi->setPrepayId($prepay_id); $jsApiParameters = $jsApi->getParameters();
swoole作為http_server操作使用方法如下:
根目錄下有server整合了swoole服務端 (後臺執行直接php執行) HttpServer.php (linux環境下直接執行php HttpServer.php) http_server實現原理是把swoole作為底層處理請求,然後透過php-cli把url交給 yaf來處理,yaf只是作為一個框架使用
swoole作為http_server的呼叫如下:
在瀏覽器裡輸入生產環境可以把監聽埠改為80 public function swoolehttpAction(){ Yaf_Dispatcher::getInstance()->autoRender(FALSE); $where=array('id' =>37936); $user=new HbModel('hb_users');//直接例項化給表名就行了,其他跟操作thinkphp一樣 $result = $user->where($where)->select(); //echo $user->getlastsql(); // echo json_encode( $result); echo json_encode( $where);//透過swoole返回給瀏覽器結果{"id":37936} }
swoole作為websocket_server操作使用方法如下:
根目錄下有server整合了swoole服務端 (後臺執行直接php執行) WebSocketServer.php (linux環境下直接執行php WebSocketServer.php) websocket_server實現原理是把swoole作為websocket伺服器,然後透過php-cli把引數傳給 yaf來處理,yaf來處理邏輯
swoole作為websocket_server的呼叫如下:
在瀏覽器裡輸入 public function swoolesocketAction(){ Yaf_Dispatcher::getInstance()->autoRender(FALSE); $this->getView()->display("index/swoolesocket.html"); }
html請求websocket
<!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="/public/js/jquery-1.8.0.min.js"></script> <style> #chatLog {width:440px; height:200px; border:1px solid #7F9DB9; overflow:auto;margin-bottom: 20px} </style> <meta charset="UTF-8"> <script type="text/javascript"> var exampleSocket = new WebSocket("ws://192.168.1.46:9503");//設為相應的監聽ip及埠號 exampleSocket.onopen = function (event) { exampleSocket.send("親!我連上啦!"); }; exampleSocket.onmessage = function (event) { console.log(event.data); $('#chatLog').append('<br/>'+event.data); } exampleSocket.onclose = function(event) { console.log('Client notified socket has closed',event); }; </script> </head> <body> <div id="chatLog" ></div> <input type="text" id="content"> <button onclick="exampleSocket.send( document.getElementById('content').value )">傳送</button> <button onclick="exampleSocket.send('smes_closed')">關閉</button> </body> </html>
宣告:本文由雲豹科技轉發自qieangel部落格,如有侵權請聯絡作者刪除
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69982461/viewspace-2790861/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實現小程直播帶貨app原始碼的紅包傳送功能APP原始碼
- 如何實現直播間原始碼重要的簡訊驗證碼功能原始碼
- 直播app原始碼,map實現購物車選擇功能APP原始碼
- 直播app原始碼,定時開關,實現計時器功能APP原始碼
- 直播帶貨商城功能詳解布穀直播APP原始碼新增功能APP原始碼
- 直播APP原始碼實現直播流程上需要注意的內容APP原始碼
- 直播原始碼功能大全原始碼
- app直播原始碼,android AES加密解密實現APP原始碼Android加密解密
- 直播app原始碼,HTML + jQuery 實現輪播圖APP原始碼HTMLjQuery
- 直播系統app原始碼,藉助django 實現顯示圖片功能APP原始碼Django
- 直播原始碼網站,直播間小遊戲java遞迴的實現方式原始碼網站遊戲Java遞迴
- 直播電商原始碼,簡述直播的實現原理原始碼
- 教育直播APP系統原始碼,原生開發功能APP原始碼
- 直播平臺原始碼開發,簽到功能的實現原始碼
- 如何實現婚戀app原始碼中直播首屏載入優化?APP原始碼優化
- 為了直播流暢,實現直播商城原始碼的轉碼原始碼
- app直播原始碼,Node.js實現密碼雜湊加密APP原始碼Node.js密碼加密
- 直播間原始碼,透過Redis實現資料快取原始碼Redis快取
- app直播原始碼,xml實現由上而下的顏色漸變APP原始碼XML
- 直播軟體原始碼,uniapp捲軸置頂實現原始碼APP
- 影片直播app原始碼,純css實現橫向滾動APP原始碼CSS
- app直播原始碼“助力”直播架構,走上探索之路APP原始碼架構
- app直播原始碼,edusoho直播回放增加進度條APP原始碼
- 直播帶貨app原始碼是如何應對市場挑戰的(附原始碼功能)APP原始碼
- 直播APP原始碼系統家族功能開發介紹APP原始碼
- 線上直播系統原始碼,vue實現搜尋文字高亮功能原始碼Vue
- 直播app系統原始碼,使用element ui隱藏元件實現圖片預覽功能APP原始碼UI元件
- 直播app原始碼,JAVA8 時間格式轉換APP原始碼Java
- 直播程式原始碼實現直播業務時必不可少的方面原始碼
- 直播商城原始碼,實現系統的日間/夜間模式切換原始碼模式
- 直播小程式原始碼,vue實現時間倒數計時原始碼Vue
- 教你實現,搭建直播影片app原始碼的賬號體系APP原始碼
- app直播原始碼,自定義兩種Activity切換動畫實現APP原始碼動畫
- app直播原始碼,vue2 實現簡易購物車APP原始碼Vue
- 直播系統app原始碼,用遞迴實現氣泡排序APP原始碼遞迴排序
- 直播APP原始碼,直播系統推流SDK(Android)APP原始碼Android
- 直播間禮物機制,已成為直播原始碼開發中佔比最重的功能原始碼
- 關於直播賣貨小程式原始碼推流功能的實現原始碼