国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

手把手教你5分鐘用 PHP 搭建一個(gè)高性能服務(wù)化后端框架

Charles / 1075人閱讀

摘要:前言一直以來(lái),因?yàn)闃?biāo)準(zhǔn)應(yīng)用方式是配合或使用,而被認(rèn)為不適合做服務(wù)化后端。下面我就介紹如何用來(lái)搭建一個(gè)高性能的服務(wù)化后端框架,并且實(shí)現(xiàn)一個(gè)客戶端調(diào)用例子。服務(wù)端我使用的框架叫,地址在這里。

前言

一直以來(lái),PHP 因?yàn)闃?biāo)準(zhǔn)應(yīng)用方式是配合 php-fpm 或 apache mod 使用,而被認(rèn)為不適合做服務(wù)化后端。但是隨著 Workerman 和 Swoole 這些常駐進(jìn)程模塊的出現(xiàn),PHP 其實(shí)早就已經(jīng)合格。

下面我就介紹如何用 PHP 來(lái)搭建一個(gè)高性能的服務(wù)化后端框架,并且實(shí)現(xiàn)一個(gè)客戶端調(diào)用例子。

服務(wù)端

現(xiàn)在 PHP 圈子里最流行的框架是 Laravel, Lumen 是它的精簡(jiǎn)版,保留了 Container(依賴注入), artisan(命令行生成數(shù)據(jù)表)等優(yōu)點(diǎn)。

服務(wù)端我使用的框架叫 Luke,Github 地址在這里。Luke 是 Lumen 的非官方分支,在 Lumen 上層做了一層封裝,剝離了用于 http 的路由,同時(shí)引入 Workerman。

現(xiàn)在在你的工作目錄執(zhí)行下面命令生成項(xiàng)目代碼

composer create-project luke/luke=dev-luke rpcserver
cd rpcserver

這時(shí)在 servers 目錄下有 http.php 和 jsonrpc.php 兩個(gè)文件,分別對(duì)應(yīng) http 服務(wù) 和 jsonrpc 服務(wù)。現(xiàn)在我們進(jìn)入 rpcserver/app/Http/Controllers,編輯文件 ExampleController.php,增加下面代碼

public function show($name)
{
    return "Hello $name, this is Luke.";
}

這樣我們服務(wù)端就已經(jīng)搭建好了,現(xiàn)在回到 rpcserver 目錄,執(zhí)行下面命令開(kāi)啟服務(wù)

php servers/jsonrpc.php start

這時(shí) console 會(huì)輸出

Workerman[servers/jsonrpc.php] start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.5.4          PHP version:7.2.1
------------------------ WORKERS -------------------------------
user          worker        listen                 processes status
simon         none          jsonNL://0.0.0.0:8000   1         [OK] 
----------------------------------------------------------------

表示服務(wù)正在正常運(yùn)行。

本例子只給 Workerman 一個(gè)任務(wù)進(jìn)程,更多設(shè)置和守護(hù)進(jìn)程方式可以查看 Workerman文檔

客戶端

現(xiàn)在我們回到項(xiàng)目根目錄,另開(kāi)一個(gè) console,輸入下面命令新建客戶端目錄,引入模塊

mkdir client
cd client
composer require luke/client

這時(shí) vendor/luke/client 目錄下已經(jīng)有了兩個(gè)文件 config.php 和 test.php,他們分別是配置和客戶端的例子。我們不管他們,在項(xiàng)目目錄下新建 test.php 文件,輸入下面的代碼并保存

 [
        "hosts" => ["127.0.0.1:8000"]
    ]
];

Client::config($config);
$client = Client::instance("Example");
$ret = $client->show("開(kāi)發(fā)者");
var_dump($ret);

現(xiàn)在執(zhí)行

php test.php

如果看到輸出

array(1) {
  "result" =>
  string(30) "Hello 開(kāi)發(fā)者, this is Luke."
}

那么恭喜你!你的 rpc 服務(wù)端和客戶端已經(jīng)搭建好了。現(xiàn)在將它應(yīng)用到正式項(xiàng)目中吧。

Workerman 與 Swoole

作為 PHP 的常駐方案,兩個(gè)都非常優(yōu)秀,而 Swoole 在社區(qū)的活躍度比 Workerman 高。但因?yàn)閮烧咝阅懿环植伲?Workerman 是用純 PHP 開(kāi)發(fā),代碼更為可控,因此 Luke 選擇了 Workerman。然而兩者在調(diào)用方式非常接近,只要對(duì)代碼稍加修改就能改成使用 Swoole。

Workerman 的并發(fā)性能可以參考這里

后記

在生產(chǎn)環(huán)境使用服務(wù)化架構(gòu),通信部分除了協(xié)議外,還要注意加密。這部分 Luke 現(xiàn)在還沒(méi)有提供,用戶可以用簡(jiǎn)單的加密算法自己實(shí)現(xiàn)。
當(dāng)服務(wù)變多后,還需要添加自動(dòng)發(fā)現(xiàn)的功能,這點(diǎn)在 Luke Client 的項(xiàng)目主頁(yè)提供了一些思路。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28186.html

相關(guān)文章

  • 后端API從入門到放棄指北

    摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...

    Jeffrrey 評(píng)論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...

    sf190404 評(píng)論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...

    Airmusic 評(píng)論0 收藏0
  • 把手教你基于WordPress搭建自己的個(gè)人博客

    摘要:一步一步教你基于搭建自己的個(gè)人博客,作為成熟的框架,美觀,方便,插件多,更新頻繁,非常適合個(gè)人博客與網(wǎng)站的搭建,適合新手,無(wú)需太多的代碼基礎(chǔ)。原文鏈接手把手教你搭建自己的網(wǎng)站購(gòu)買購(gòu)買云服務(wù)器為了搭建個(gè)人網(wǎng)站,首先肯定需要一個(gè)云服務(wù)器。 一步一步教你基于WordPress搭建自己的個(gè)人博客,WordPress作為成熟的CMS框架,美觀,方便,插件多,更新頻繁,非常適合個(gè)人博客與網(wǎng)站的搭建...

    vpants 評(píng)論0 收藏0
  • 把手教你搭A(yù)PM之Skywalking搭建指南(支持Java/C#/Node.js)

    摘要:通過(guò)跟蹤請(qǐng)求的處理過(guò)程,來(lái)對(duì)應(yīng)用系統(tǒng)在前后端處理服務(wù)端調(diào)用的性能消耗進(jìn)行跟蹤,關(guān)于的介紹可以看這個(gè)鏈接,大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng)作者刀把五鏈接來(lái)源知乎著作權(quán)歸作者所有。 手把手教你搭A(yù)PM之Skywalking 前言 什么是APM?全稱:Application Performance Management 可以參考這里: 現(xiàn)代APM體系,基本都是參考Google的Dapper(大規(guī)模...

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

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

0條評(píng)論

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