php分級
『壹』 php rpc好用嗎,有什麼優缺點php rpc框架哪個好
什麼是RPC框架? 如果用一句話概括RPC就是:遠程調用框架(Remote Procere Call)那什麼是遠程調用?通常我們調用一個php中的方法,比如這樣一個函數方法: localAdd(10, 20),localAdd方法的具體實現要麼是用戶自己定義的,要麼是php庫函數中自帶的,也就說在localAdd方法的代碼實現在本地,它是一個本地調用!遠程調用意思就是:被調用方法的具體實現不在程序運行本地,而是在別的某個遠程地方。
遠程調用原理
比如 A (client) 調用 B (server) 提供的remoteAdd方法:
首先A與B之間建立一個TCP連接;
然後A把需要調用的方法名(這里是remoteAdd)以及方法參數(10, 20)序列化成位元組流發送出去;
B接受A發送過來的位元組流,然後反序列化得到目標方法名,方法參數,接著執行相應的方法調用(可能是localAdd)並把結果30返回;
A接受遠程調用結果,輸出30。
RPC框架就是把我剛才說的這幾點些細節給封裝起來,給用戶暴露簡單友好的API使用。
遠程調用的好處
解耦:當server需要對方法內實現修改時,client完全感知不到,不用做任何變更;這種方式在跨部門,跨公司合作的時候經常用到,並且方法的提供者我們通常稱為:服務的暴露。
RPC與Socket有什麼區別?
通過上面的簡單闡述,好像RPC與Socket 好像啊。都是調用遠程的方法,都是client/server模式,我之前也寫了一篇文章: 細說socket 那他們有啥區別呢?
RPC(遠程過程調用)採用客戶機/伺服器模式實現兩個進程之間相互通信。socket是RPC經常採用的通信手段之一,RPC是在Socket的基礎上實現的,它比socket需要更多的網路和系統資源。除了Socket,RPC還有其他的通信方法,比如:http、操作系統自帶的管道等技術來實現對於遠程程序的調用。微軟的Windows系統中,RPC就是採用命名管道進行通信。
RPC與REST有什麼區別?
通過了解RPC後,我們知道是RPC是client/server模式的,調用遠程的方法,REST也是我們熟悉的一套API調用協議方法,它也是基於client/server模式的,調用遠程的方法的,那他倆又有啥區別呢?
REST API 和 RPC 都是在 Server端 把一個個函數封裝成介面暴露出去,以供 Client端 調用,不過 REST API 是基於HTTP協議的,REST致力於通過http協議中的POST/GET/PUT/DELETE等方法和一個可讀性強的URL來提供一個http請求。而 RPC 則可以不基於 HTTP協議
因此,如果是後端兩種語言互相調用,用 RPC 可以獲得更好的性能(省去了 HTTP 報頭等一系列東西),應該也更容易配置。如果是前端通過 AJAX 調用後端,那麼用 REST API 的形式比較好(因為無論如何也避不開 HTTP 這道坎)。
php中流行的rpc框架有哪些
既然php是世界上最好的語言,那php中流行的RPC框架有哪些呢?
先列舉下: phprpc,yar, thrift, gRPC, swoole, hprose
因為時間和精力有限,不可能一個一個的去學習和使用,我選幾個世面上用的最多的幾個用下吧。因為RPC原理是一樣的,都是Client/Server模式,只是每個框架的使用方式不一樣而已。
『貳』 PHP無限級分類怎麼寫啊
<?php
/*========================================================
類名:catalog
功能:無限分級類
方法:
樹形顯示分類
catalog_show($id) //參數$id 遞歸調用
流程:找到父分類為0所有根分類-> 一直遞歸取得所有分類並顯示
添加分類
catalog_add($uid,$name) //$uid 父id //$name 分類名
流程:依據$uid,在此id下添加一個新子id
刪除分類
catalog_del($uid)//參數 $uid 數要刪除的分類
修改分類
catalog_set($id,$name) //參數 $id 要修改的分類 //參數 $name 新的分類名
變數:
$config //資料庫信息-> host,user,pass,dbname
$catalog_dbname //分類資料庫名
資料庫:
catalog_id //分類的自然序號
catalog_uid //分類的父分類
catalog_name //分類名
catalog_path_number //親緣樹數字形式 0:1:2
catalog_path_char //親緣樹字元形式 分類1:分類1.1:分類1.1.1
參照文章 http://www.phpchina.com/12823/viewspace_4468.html
========================================================*/
class catalog{
var $config;
var $catalog_dbname;
var $links;
private function connect(){
$this->links = mysql_connect($this->config['host'],$this->config['user'],$this->config['pass']) or die("錯誤: 第".__LINE__."行<br>".mysql_error());
mysql_select_db($this->config['dbname'],$this->links);
mysql_query("SET NAMES gb2312");
}
function catalog_show($uid = 0){
$this->connect();
$sql = "Select * FROM ".$this->catalog_dbname. "
Where catalog_uid = ". $uid ."
orDER BY catalog_id ";
$result = mysql_query($sql,$this->links) or die("錯誤: 第".__LINE__."行<br>".mysql_error());
if(mysql_num_rows($result) > 0){
while ($row = mysql_fetch_assoc($result)){
if($this->sun_catalog($row['catalog_id'])){//判斷有沒有子分類
$cata_img = "<img id = 'img".$row['catalog_id']."' src='./img/last_node.jpg' ōnclick='click_catalog(".$row['catalog_id'].")'/>";
}else{
$cata_img = "<img src='./img/sp.jpg'/>";
}
$path = explode(":",$row['catalog_path_number']);
if(count($path) > 1){
for($i=1;$i<count($path);$i++){
$path_img .= "<img src='./img/sp.jpg'/>";
}
}
echo $path_img.$cata_img;
echo "<a class='menu' href = 'javascrīpt:send_id(".$row['catalog_id'].")'>";
echo $row['catalog_name']."</a><br>";
$path_img = "";
if($this->sun_catalog($row['catalog_id'])){
$hidden_div = "style='display:none'";
echo "<div id = 'div".$row['catalog_id']."' ".$hidden_div.">";
$this->catalog_show($row['catalog_id']);
echo "</div>";
}
}
}
}
private function sun_catalog($uid){//判斷是否有子分類
$sql = "Select * FROM ".$this->catalog_dbname. "
Where catalog_uid = ". $uid ."
orDER BY catalog_id ";
$result = mysql_query($sql,$this->links) or die("錯誤: 第".__LINE__."行<br>".mysql_error());
if(mysql_num_rows($result) > 0){
return true;
}else{
return false;
}
}
function catalog_add($uid,$name){
//獲取父id的親緣樹
$this->connect();
$sql = "Select * FROM ".$this->catalog_dbname."
Where catalog_id = '".$uid."'";
$result = mysql_query($sql,$this->links)
or die("錯誤: 第".__LINE__."行<br>".mysql_error());
$row = mysql_fetch_assoc($result);
$fid_path_number = $row['catalog_path_number'];//id的數字親緣樹
$fid_path_char = $row['catalog_path_char'];//id的字元親緣樹
//插入數據 先插入行->再找到最新插入的id, 在依據這個id進行修改
$sql = "Insert INTO ".$this->catalog_dbname."(catalog_uid,catalog_name)
VALUES(".$uid.",'".$name."')";
$result = mysql_query($sql,$this->links)
or die("錯誤: 第".__LINE__."行<br>".mysql_error());
$catalog_id = mysql_insert_id();//獲取自己的id
$catalog_path_number = $fid_path_number.":".$catalog_id;//得到自己的數字親緣數
$catalog_path_char = $fid_path_char.":".$name;//得到自己的字元親緣數
$sql = "Update '".$this->catalog_dbname."'
SET
catalog_path_number = '".$catalog_path_number."',
catalog_path_char = '".$catalog_path_char."'
Where
catalog_id = ".$catalog_id;
mysql_query($sql,$this->links)
or die("錯誤: 第".__LINE__."行<br>".mysql_error());
}
function catalog_del($id){
$this->connect();
$sql = "Delete FROM ".$this->catalog_dbname."
Where catalog_id = ".$id;
mysql_query($sql,$this->links)
or die("錯誤: 第".__LINE__."行<br>".mysql_error());
}
function catalog_set($id,$name){
$this->connect();
$sql = "Update ".$this->catalog_dbname."
SET
catalog_name = '".$name."'
Where
catalog_id = ".$id;
mysql_query($sql,$this->links)
or die("錯誤: 第".__LINE__."行<br>".mysql_error());
}
}
?>
『叄』 php 無限分級
大鍵春概是這個樣子:
<?php
//資料庫查詢函數,有可能你有現成的類,注意本函數返回的是一維數組
function db_select($sql){
$rows=array();
$re=mysql_query($sql);
while($row=mysql_fetch_row($res)) $rows[]=$row[0];
mysql_free_result($res);
return $rows;
}
//下面的函數顯示參數$id的名字,以及其所有子孫
function show($id,$level=0){
//1獲取悶罩name並顯示
$rows=db_select("select name from tab where id=$id");
for ($i=0;$i<$level;$i++) echo '=';
echo '+'.$rows[0]+"<br>\n";
/螞亮鬧/顯示所有的兒子
$rows=db_select("select id from tab where bid=$id");
foreach ($rows as $sid) show($sid, $level+1);
}
//例如,可以這樣調用:
show(1);
?>
『肆』 如何用php+MySql實現分級許可權管理
可以看看mysql里喊團面的那張uer表,可以參考參蠢亮考
還有就是vbb的
如果我的回答沒能幫助您,請繼續追問。
您也可以向我們團隊發出請鄭檔橘求,會有更專業的人來為您解答。
『伍』 php mysql 多表分級查詢
PHP+Mysql多條件多值查詢示例代碼:
index.html代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>SQL多條件查詢示例</title></head><body><form method="post" action="deal.php"><h1>房屋出租</h1>房屋類型:<select name="type"><option value="1">一居室</option><option value="2">二居室</option><option value="3">三居室</option></select>面積:<input name="area" type="text"/>地址:<input name="addr" type="text"/><input name="btn" type="submit" value="搜索" /></form></body></html>
deal.php文件:
<?php//連接資料庫$conn=mysql_connect("localhost","root",""); //選擇資料庫$db=mysql_select_db("資料庫名"); //接收 參數$type=$_POST['type'];$area=$_POST['area'];$addr=$_POST['addr']; //SQL語句主題$query="select * from room where "; //根據條件和傳的值拼接sql語句//判斷面積不為空if($type!=""){ //然後根據具體面積分情況拼接 switch($type){ case 1: //一居室 $query.=" room_type=1"; break; case 2: $query.=" room_type=2"; break; case 3: $query.=" room_type=3"; break; }} //面積if($area!=""){ $query.=" and area ={$area}";} //地址if($addr!=""){ $query.=" and addr like '%{$addr}%'"; //地址} //執行查詢$result=mysql_query($query); //遍歷結果echo "搜搜結果如下:";while($row=mysql_fetch_array($result)){ echo "地址:".$row['addr']; echo ""; echo "面積:".$row['area']; echo ""; echo "居室:".$row['type']; echo ""; echo "價格:".$row['addr']; echo ""; //等等} ?>
『陸』 php在一張表裡怎麼寫省市區聯動
我沒看懂你具體想干什麼。。。
我做過省市縣分級聯動下拉菜單,不知道是不是你想要的。。。
『柒』 php中怎麼進行頁面許可權訪問控制,給點實例
通常,可以在 php 的$_SESSION 全局數組里,定義一個成員,然後用 if-else 語句判斷,比如:
if($_SESSION['name']=='abc'){
//有許可權訪問該頁面
}else{
//無權訪問
}
更進一步的分級許可權控制,可以通過資料庫建立許可權表,根據許可權表中的記錄來判斷是否能訪問。
『捌』 PHP網站流量統計的代碼,一般是在網站文件夾的哪個文件里的
phpMyVisites
phpMyVisites是一個網站流量統計系統,它能夠提供非常詳細的統計報告和高級圖形報表。phpMyVisites不是一個Apachelog分析工具,它建有自己的log。它的特點包括: 安裝部署:提供可視化的安裝向導,並且使用簡單只要把一段簡單的Javascript代碼添加到你網站的頁面中就能夠馬上開始收集訪問者的信息。一個簡潔,友好的界面可用來展示數據和幫助數據分析。提供簡潔,明了的圖形分析報表。安全:phpMyVisites能夠最大限度地阻止入侵和外部攻擊。支持多網站統計多用戶:可以添加無限個用戶並對每個用戶賦予不同的管理許可權(針對某一個網站的查看和管理的許可權)。國際化支持:phpMyVisites提供 30種語言包。能夠准確統計一段時間內的訪問量(天/周/月/年)。訪問者的回頭率:新訪問者,經常訪問者,有規律性的訪問者。提供多種文件格式的統計報告(PDF,Image等)。對被統計的網頁進行分組/分級。訪問者分析:統計訪問者是從哪個頁面離開網站的和從哪個頁面進入網站或通過哪個搜索引擎的關健字進入網站,在網站的停留時間,所訪問的頁面等。可通過e-mail或RSS聚合獲取網站的流量信息。
phpTrafficA
phpTrafficA是一個統計工具用於網站流量分析。基於PHP與MySQL開發。它能夠統計你網站的流量,包括來自哪些搜索引擎,關健字和其它轉向你網站的鏈接。它還能夠分析瀏覽你網站所用的操作系統,瀏覽器,訪問者停留時間等等。
AudiStat
AudiStat是一個基於PHP+MySQL開發的,輕量級的,佔用伺服器很少資源的網站流量統計系統。 它能夠統計點擊量,涉及的頁面,訪問者國家,訪問者域名,訪問者所用的瀏覽器等。統計信息展示頁面可以通過Html代碼自己定製。在最新版本中還加入跟蹤google爬蟲的功能。
piwik
Piwik是一套基於Php+MySQL技術構建,能夠與Google Analytics相媲美的開源網站訪問統計系統,前身是phpMyVisites。Piwik可以給你詳細的統計信息,比如網頁瀏覽人數, 訪問最多的頁面, 搜索引擎關鍵詞等等,並且採用了大量的AJAX/Flash技術,使得在操作上更加便易。此外,它還採用了插件擴展及開放API架構,可以讓開發人員根據自已的實際需求創建更多的功能.
Webanalyse
採用PHP4開發的網站流量統計工具。WebAnalyse沒有使用任何資料庫,或Apache logs支持。以便讓安裝更加快速和簡單。
Open Web Analytics
Open Web Analytics是一個開源的網站流量統計系統。基於PHP/Open Flash Chart/Ajax技術開發,既可以單獨使用也可以與WordPress、Gallery&MediaWiki集成使用。支持多個網站,集成 Google Maps,RSS/Atom訂閱跟蹤等功能。
SlimStat
SlimStat是一個基於PHP+MySQL開發的網站流量訪問統計分析系統,類似於Google Analytics。它可以按時間段顯示:每個頁面的訪問數,涉及的URL和域名,搜索關鍵字,瀏覽器種類、操作系統類型、國家、分辯率等。
具體內容去參考資料裡面看吧,個人比較推薦piwik
『玖』 資料庫中的無限分級用php讀出來放到數組裡面怎麼做
$arr[0]['id']=要寫入的數據汪旦祥,$arr[0]['person']['id']=要寫遲悄入的數據困搏,試一下這種的