摘要:的框架的話語言的話首選的當然是鳥哥的,支持并行等等,總之有很多優點。首先查看了鳥哥的文章并行的框架,對的基本原理有了一個認識,做了一個簡單的請求頁面,具體見鳥哥博客,沒問題,接下來就是對現有項目的改造了。最后感謝鳥哥寫出這么牛掰的東西。
公司新上了個頻道,需要我負責的幾個頻道提供接口,因為進度比較趕,就直接寫了web的 http 接口供同事訪問。
后來訪問量越來越大,出現了很多問題,例如:因為是json傳遞數據,偶爾會出現亂碼的情況.他們是在php文件中直接調用的接口,如果網絡情況不好會出現頁面很慢的情況。老板說要解決掉這個問題。想了很多辦法,最后決定從網絡方面入手。決定采用RPC來避免http的請求。
RPC的框架的話,php語言的話首選的當然是鳥哥的yar,支持并行等等,總之有很多優點。
首先查看了鳥哥的文章 Yar – 并行的RPC框架(Concurrent RPC framework) ,對Yar的基本原理有了一個認識,做了一個簡單的請求頁面,具體見鳥哥博客,沒問題,接下來就是對現有項目的改造了。
原來有項目是用phpcms(沒有使用生成功能)和YII做的。因為phpcms相對而言要簡單的多,所以先從phpcms入手,來對框架進行改造,加入Yar的機制。
原來所有的外部接口全部是通過phpcms的api機制來實現的,所以先從入口文件入手,入口文件的代碼如下:
define(‘PHPCMS_PATH’, dirname(FILE).DIRECTORY_SEPARATOR);
include PHPCMS_PATH.’phpcms/base.php’;
$param = pc_base::load_sys_class(‘param’);
$op = isset($GET["op"]) && trim($_GET["op"]) ? trim($_GET["op"]) : exit(‘Operation can not be empty’);
if (!preg_match(‘/([^a-z]+)/i’,$op) && file_exists(PHPCMS_PATH.’api/’.$op.’.php’)) {
include PHPCMS_PATH.’api/’.$op.’.php’;
} else {
exit(‘API handler does not exist’);
}
文件非常簡單,就是引入了base基本類,還有很多判斷,因為Yar的服務端最好不要有數組,所以需要對判斷等進行改造,取消所有的輸出,將必要的錯誤判斷以return的方法返回。幸運的是,api的入口文件并沒有初始化路由,所以就省去了好多操作,只需要對入口文件做一些簡單的修改就可以了。
在api的入口文件上加這兩行來出事化yar的服務:
$server = new Yar_Server(new $op());
$server->handle();
$op是初始化的類名,和鳥哥的那個例子中的server端的類名是同樣的效果,不同的是因為業務需求,需要根絕請求url的參數來初始化不同的類。達到我們需要得效果。
剩下的就還剩下原來的api調用文件中的路由了。將路由去掉,可以根據映射添加一些客戶端需要得方法,例如:方法列表等等。
然后在客戶端模擬其他頻道的請求,代碼如下:
$client = new Yar_Client(“http://zjk.fh21.net/api.php?op=iask”);
$return = $client->get_sort_data();
var_dump($return);
可以正常的獲取到結果,OK,改造完成,現在只需要讓別的頻道稍微改一下調用方式就可以了。
ps:可能還有其他的工作要做,例如:將原來一些方法名在根絕新的功能修改等等。
后來通過反復測試發現,接口之間的交互可以直接通過php的數組來進行,而沒必要用Json數據。因為我們的頁面全是gbk的,所以節省了很多開發成本.
yar的基本原理就是這樣,最重要的是要把自己所用框架的基本邏輯搞清楚,只要把yar整合到自己的框架中,基本上就等于是成功了。
最后 感謝鳥哥寫出這么牛掰的東西。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/20760.html
摘要:需求在了解了前面我們關于服務治理出現的必要性之后。我們知道服務治理是建立在眾多服務基礎之上的,那么,第一步,打通這些服務是基礎,也就是我們常說的遠程調用。上面執行遠程調用也類似。 需求 在了解了前面我們關于服務治理出現的必要性之后。我們知道服務治理是建立在眾多服務基礎之上的,那么,第一步,打通這些服務是基礎,也就是我們常說的 RPC 遠程調用。要像調用本地方法一樣調用遠程服務器上的方法...
摘要:客戶端并行調用這兩個服務這里的方法的命令皆以原版為準則。回調函數需要繼承實現里面定義了兩個方法是針對并行調用發出之后立即執行的任務,而則是每個請求之后返回的結果。 簡介 Yar 是一個輕量級, 高效的 RPC 框架, 它提供了一種簡單方法來讓 PHP 項目之間可以互相遠程調用對方的本地方法. 并且 Yar 也提供了并行調用的能力. 可以支持同時調用多個遠程服務的方法.Yar 鳥哥博客介...
摘要:模擬登錄新浪微博的核心,也是與模擬登錄最大的不同,密碼加密。已經實現模擬新浪微博登錄的功能,之后不再更新。 參考資料: http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ http://blog.csdn.net/fly_leopard/article/details/51148904 http://www....
摘要:微博墻就是這樣的一個工具,這不是一款普通的插件,這是一款搭建在基于的插件。這是一款基于的插件,底層語言開發,性能卓越。 在現在移動互聯網時代,微博已經成為了每個人生活中必不可少的一個社交工具。而WordPress是全世界最為流行的博客系統,把你的博客接入新浪微博,借助微博的強大用戶群,不僅能給你的網站提供巨大的流量,而且還能帶來不可估量價值。 WordPress微博墻就是這樣的一個工具...
閱讀 3595·2021-09-13 10:28
閱讀 1944·2021-08-10 09:43
閱讀 1015·2019-08-30 15:44
閱讀 3186·2019-08-30 13:14
閱讀 1839·2019-08-29 16:56
閱讀 2944·2019-08-29 16:35
閱讀 2852·2019-08-29 12:58
閱讀 870·2019-08-26 13:46