yaf項目快速開發 快速開發demo 支持swoole
yaf Swoole 是 yaf 和 swoole 結合,把 swoole 作為 WebSocketServer 服務器
yaf項目快速開發:
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
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的調用如下:
在瀏覽器里輸入http://www.xxx.com:9501/index/swoolehttp,生產環境可以把監聽端口改為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的調用如下:
在瀏覽器里輸入http://www.xxx.com/index/swoolesocket public function swoolesocketAction(){ Yaf_Dispatcher::getInstance()->autoRender(FALSE); $this->getView()->display("index/swoolesocket.html"); }
html請求websocket
<html> <head> <title></title> <meta charset="UTF-8"> <script type="text/javascript"> var exampleSocket = new WebSocket("ws://127.0.0.0:9503");//設為相應的監聽ip及端口號 exampleSocket.onopen = function (event) { exampleSocket.send("親!我連上zqf了!"); }; exampleSocket.onmessage = function (event) { console.log(event.data); } </script> </head> <body> <input type="text" id="content"> <button onclick="exampleSocket.send( document.getElementById('content').value )">發送</button> </body> </html>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!