亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

phpcms 里面 Yar 的使用

chnmagnus / 2837人閱讀

摘要:的框架的話(huà)語(yǔ)言的話(huà)首選的當(dāng)然是鳥(niǎo)哥的,支持并行等等,總之有很多優(yōu)點(diǎn)。首先查看了鳥(niǎo)哥的文章并行的框架,對(duì)的基本原理有了一個(gè)認(rèn)識(shí),做了一個(gè)簡(jiǎn)單的請(qǐng)求頁(yè)面,具體見(jiàn)鳥(niǎo)哥博客,沒(méi)問(wèn)題,接下來(lái)就是對(duì)現(xiàn)有項(xiàng)目的改造了。最后感謝鳥(niǎo)哥寫(xiě)出這么牛掰的東西。

公司新上了個(gè)頻道,需要我負(fù)責(zé)的幾個(gè)頻道提供接口,因?yàn)檫M(jìn)度比較趕,就直接寫(xiě)了web的 http 接口供同事訪(fǎng)問(wèn)。

后來(lái)訪(fǎng)問(wèn)量越來(lái)越大,出現(xiàn)了很多問(wèn)題,例如:因?yàn)槭莏son傳遞數(shù)據(jù),偶爾會(huì)出現(xiàn)亂碼的情況.他們是在php文件中直接調(diào)用的接口,如果網(wǎng)絡(luò)情況不好會(huì)出現(xiàn)頁(yè)面很慢的情況。老板說(shuō)要解決掉這個(gè)問(wèn)題。想了很多辦法,最后決定從網(wǎng)絡(luò)方面入手。決定采用RPC來(lái)避免http的請(qǐng)求。

RPC的框架的話(huà),php語(yǔ)言的話(huà)首選的當(dāng)然是鳥(niǎo)哥的yar,支持并行等等,總之有很多優(yōu)點(diǎn)。

首先查看了鳥(niǎo)哥的文章 Yar – 并行的RPC框架(Concurrent RPC framework) ,對(duì)Yar的基本原理有了一個(gè)認(rèn)識(shí),做了一個(gè)簡(jiǎn)單的請(qǐng)求頁(yè)面,具體見(jiàn)鳥(niǎo)哥博客,沒(méi)問(wèn)題,接下來(lái)就是對(duì)現(xiàn)有項(xiàng)目的改造了。

原來(lái)有項(xiàng)目是用phpcms(沒(méi)有使用生成功能)和YII做的。因?yàn)閜hpcms相對(duì)而言要簡(jiǎn)單的多,所以先從phpcms入手,來(lái)對(duì)框架進(jìn)行改造,加入Yar的機(jī)制。

原來(lái)所有的外部接口全部是通過(guò)phpcms的api機(jī)制來(lái)實(shí)現(xiàn)的,所以先從入口文件入手,入口文件的代碼如下:

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’);
}

文件非常簡(jiǎn)單,就是引入了base基本類(lèi),還有很多判斷,因?yàn)閅ar的服務(wù)端最好不要有數(shù)組,所以需要對(duì)判斷等進(jìn)行改造,取消所有的輸出,將必要的錯(cuò)誤判斷以return的方法返回。幸運(yùn)的是,api的入口文件并沒(méi)有初始化路由,所以就省去了好多操作,只需要對(duì)入口文件做一些簡(jiǎn)單的修改就可以了。

在api的入口文件上加這兩行來(lái)出事化yar的服務(wù):

$server = new Yar_Server(new $op());
$server->handle();

$op是初始化的類(lèi)名,和鳥(niǎo)哥的那個(gè)例子中的server端的類(lèi)名是同樣的效果,不同的是因?yàn)闃I(yè)務(wù)需求,需要根絕請(qǐng)求url的參數(shù)來(lái)初始化不同的類(lèi)。達(dá)到我們需要得效果。

剩下的就還剩下原來(lái)的api調(diào)用文件中的路由了。將路由去掉,可以根據(jù)映射添加一些客戶(hù)端需要得方法,例如:方法列表等等。

然后在客戶(hù)端模擬其他頻道的請(qǐng)求,代碼如下:

$client = new Yar_Client(“http://zjk.fh21.net/api.php?op=iask”);
$return = $client->get_sort_data();
var_dump($return);

可以正常的獲取到結(jié)果,OK,改造完成,現(xiàn)在只需要讓別的頻道稍微改一下調(diào)用方式就可以了。

ps:可能還有其他的工作要做,例如:將原來(lái)一些方法名在根絕新的功能修改等等。

后來(lái)通過(guò)反復(fù)測(cè)試發(fā)現(xiàn),接口之間的交互可以直接通過(guò)php的數(shù)組來(lái)進(jìn)行,而沒(méi)必要用Json數(shù)據(jù)。因?yàn)槲覀兊捻?yè)面全是gbk的,所以節(jié)省了很多開(kāi)發(fā)成本.

yar的基本原理就是這樣,最重要的是要把自己所用框架的基本邏輯搞清楚,只要把yar整合到自己的框架中,基本上就等于是成功了。

最后 感謝鳥(niǎo)哥寫(xiě)出這么牛掰的東西。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/20760.html

相關(guān)文章

  • 服務(wù)治理深入淺出(2)- 遠(yuǎn)程方法調(diào)用實(shí)現(xiàn)

    摘要:需求在了解了前面我們關(guān)于服務(wù)治理出現(xiàn)的必要性之后。我們知道服務(wù)治理是建立在眾多服務(wù)基礎(chǔ)之上的,那么,第一步,打通這些服務(wù)是基礎(chǔ),也就是我們常說(shuō)的遠(yuǎn)程調(diào)用。上面執(zhí)行遠(yuǎn)程調(diào)用也類(lèi)似。 需求 在了解了前面我們關(guān)于服務(wù)治理出現(xiàn)的必要性之后。我們知道服務(wù)治理是建立在眾多服務(wù)基礎(chǔ)之上的,那么,第一步,打通這些服務(wù)是基礎(chǔ),也就是我們常說(shuō)的 RPC 遠(yuǎn)程調(diào)用。要像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程服務(wù)器上的方法...

    hidogs 評(píng)論0 收藏0
  • SOA面向服務(wù)基礎(chǔ)

    摘要:面向服務(wù)面向服務(wù)的基礎(chǔ)面向服務(wù)的三層應(yīng)用層,服務(wù)層,數(shù)據(jù)層應(yīng)用層用于給用戶(hù)展示,,,,安卓。在服務(wù)器端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息到達(dá)為止。編譯完成,提示我們已經(jīng)在下了。 面向服務(wù) 面向服務(wù)的基礎(chǔ) 面向服務(wù)的三層:應(yīng)用層,服務(wù)層,數(shù)據(jù)層 * 應(yīng)用層:用于給用戶(hù)展示,PC,H5,IOS,安卓。 * 服務(wù)層:業(yè)務(wù)邏輯,提供接口(商品,訂單,支付,用戶(hù),物流)。 * 數(shù)據(jù)層:提供數(shù)據(jù)支持(...

    songze 評(píng)論0 收藏0
  • 并行RPC框架(Concurrent RPC Framework) Yar Java Client

    摘要:客戶(hù)端并行調(diào)用這兩個(gè)服務(wù)這里的方法的命令皆以原版為準(zhǔn)則?;卣{(diào)函數(shù)需要繼承實(shí)現(xiàn)里面定義了兩個(gè)方法是針對(duì)并行調(diào)用發(fā)出之后立即執(zhí)行的任務(wù),而則是每個(gè)請(qǐng)求之后返回的結(jié)果。 簡(jiǎn)介 Yar 是一個(gè)輕量級(jí), 高效的 RPC 框架, 它提供了一種簡(jiǎn)單方法來(lái)讓 PHP 項(xiàng)目之間可以互相遠(yuǎn)程調(diào)用對(duì)方的本地方法. 并且 Yar 也提供了并行調(diào)用的能力. 可以支持同時(shí)調(diào)用多個(gè)遠(yuǎn)程服務(wù)的方法.Yar 鳥(niǎo)哥博客介...

    wh469012917 評(píng)論0 收藏0
  • PHP基于laravel框架獲取微博數(shù)據(jù)之一 模擬新浪微博登錄

    摘要:模擬登錄新浪微博的核心,也是與模擬登錄最大的不同,密碼加密。已經(jīng)實(shí)現(xiàn)模擬新浪微博登錄的功能,之后不再更新。 參考資料: http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ http://blog.csdn.net/fly_leopard/article/details/51148904 http://www....

    galois 評(píng)論0 收藏0
  • 基于YarWordPress微博墻插件

    摘要:微博墻就是這樣的一個(gè)工具,這不是一款普通的插件,這是一款搭建在基于的插件。這是一款基于的插件,底層語(yǔ)言開(kāi)發(fā),性能卓越。 在現(xiàn)在移動(dòng)互聯(lián)網(wǎng)時(shí)代,微博已經(jīng)成為了每個(gè)人生活中必不可少的一個(gè)社交工具。而WordPress是全世界最為流行的博客系統(tǒng),把你的博客接入新浪微博,借助微博的強(qiáng)大用戶(hù)群,不僅能給你的網(wǎng)站提供巨大的流量,而且還能帶來(lái)不可估量?jī)r(jià)值。 WordPress微博墻就是這樣的一個(gè)工具...

    james 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<