搜尋
首頁php框架YII使用 Yii2.0 建立微服務

使用 Yii2.0 建立微服務

Nov 01, 2019 pm 04:15 PM
yii微服務

使用 Yii2.0 建立微服務

概念


#把一個大型的單一應用程式和服務拆分為幾個甚至數十個的支援微服務,它可擴展單一元件而不是整個的應用程式堆疊,從而滿足服務等級協定。

傳統的開發模式就是把所有功能都放在一個套件裡,基本上不存在依賴,這樣的優勢在於開發簡單,集中式管理,功能都在本地,不存在分散式的管理和調度消耗。但缺點也很明顯:效率低,開發都在同一個專案改程式碼,互相等待,衝突不斷。穩定性差,一個微小的問題,都可能導致整個應用掛掉。另外在資源利用上表現出明顯的劣勢,例如電商雙11大促場景,下單壓力非常大,評價的壓力相對較少,那麼我們希望臨時增配應對雙11的大流程,只能全部增配,而不能定點只對訂單服務增配。所以微服務的架構開始慢慢流行並應用於大型的網站平台。

推薦:《Yii2.0框架入門與實戰專案開發影片教學

那麼介紹今天的主題,Yii 如何做微服務? Yii 可以輕鬆使用,而不需要基本和進階範本中包含的功能。換句話說,Yii 已經是一個微框架。不需要由範本提供的目錄結構與 Yii 一起工作。

安裝 Yii


為您的專案建立目錄並將工作目錄變更為該路徑。範例中使用的命令是基於 Unix 的,但在 Windows 中也存在類似的命令。

mkdir micro-app
cd micro-app

Note:需要一些 Composer 的知識才能繼續。如果您還不知道如何使用 composer,請花點時間閱讀 Composer 指南。

使用您最喜愛的編輯器在micro-app 目錄下建立composer.json 檔案並新增以下內容:

{
    "require": {
        "yiisoft/yii2": "~2.0.0"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://asset-packagist.org"
        }
    ]
}

儲存檔案並執行 composer install 命令。這將安裝框架及其所有依賴項。

建立專案結構


安裝框架之後,需要為此應用程式建立一個入口點。入口點是您嘗試開啟應用程式時將執行的第一個檔案。出於安全原因,建議將入口點檔案放在一個單獨的目錄中,並將其設定為Web根目錄。

建立一個web 目錄並將index.php 放入其中,內容如下:

<?php

// comment out the following two lines when deployed to production
defined(&#39;YII_DEBUG&#39;) or define(&#39;YII_DEBUG&#39;, true);
defined(&#39;YII_ENV&#39;) or define(&#39;YII_ENV&#39;, &#39;dev&#39;);

require(__DIR__ . &#39;/../vendor/autoload.php&#39;);
require(__DIR__ . &#39;/../vendor/yiisoft/yii2/Yii.php&#39;);

$config = require __DIR__ . &#39;/../config.php&#39;;
(new yii\web\Application($config))->run();

還要建立一個名為config.php 的文件,它將包含所有的應用程式設定:

<?php
return [
    &#39;id&#39; => &#39;micro-app&#39;,

    //设置`micro-app`的根目录
    &#39;basePath&#39; => __DIR__,

    // 控制器所在目录。
    &#39;controllerNamespace&#39; => &#39;micro\controllers&#39;,

    // 设置命名空间为 micro
    &#39;aliases&#39; => [
        &#39;@micro&#39; => __DIR__,
    ],

    //默认访问地址
    &#39;defaultRoute&#39; => &#39;home/index&#39;,

    &#39;components&#39; => [
        //请求配置
        &#39;request&#39; => [
            &#39;cookieValidationKey&#39; => &#39;test&123456&#39;,
            &#39;parsers&#39; => [
                &#39;application/json&#39; => &#39;yii\web\JsonParser&#39;,
            ]
        ],

        //Url 美化
        &#39;urlManager&#39; => [
            &#39;enablePrettyUrl&#39; => true,
            &#39;showScriptName&#39; => false,
            &#39;enableStrictParsing&#39; => false,
            &#39;rules&#39; => [
                &#39;<controller:\w+>/<action:\w+>/<id:\w+>&#39;   => &#39;<controller>/<action>&#39;,
            ],
        ],

        //数据库配置
        &#39;db&#39; => [
            &#39;class&#39; => &#39;yii\db\Connection&#39;,
            &#39;dsn&#39; => &#39;mysql:host=localhost;dbname=micro&#39;,
            &#39;username&#39; => &#39;root&#39;,
            &#39;password&#39; => &#39;数据库密码&#39;,
            &#39;charset&#39; => &#39;utf8&#39;,
        ],
    ],

];

Info:儘管設定可以保存在 index.php 檔案中,建議單獨使用它。這樣它也可以用於控制台應用程序,如下所示。

您的專案現在已經準備好編碼了。儘管由您決定專案目錄結構,只要您遵守命名空間即可。

建立第一個控制器


在建立控制器之前,建立一個 controllers/base 目錄並建立一個基礎控制器 BaseController。

<?php
namespace micro\controllers\base;

use yii\web\Controller;

class BaseController extends Controller
{
    //关闭 csrf 验证
    public $enableCsrfValidation = false;
}

然後在 controller 資料夾下面 新建一個 SiteController.php,這是預設的 控制器將處理沒有路徑資訊的請求。

<?php

namespace micro\controllers;

use yii\web\Controller;

class HomeController extends BaseController
{
    public function actionIndex()
    {
        return &#39;欢迎来到 Yii2.0 微服务!&#39;;
    }
}

如果您想為此控制器使用不同的名稱,則可以設定 yii\base\Application::$defaultRoute 進行變更。例如,對於 HomeController 將會是 'defaultRoute' => 'home/index'。

在這一點上,專案結構應該如下所示:

micro-app/
├── composer.json
├── config.php
├── web/
    └── index.php
└── controllers/
    └── base
        └── BaseController.php
    └── HomeController.php
└── vendor

如果您尚未設定 Web 伺服器,則可能需要查看Web伺服器設定檔範例。另一種選擇是使用 yii serve 命令,它將使用 PHP 內建 web 伺服器。您可以透過以下方式從micro-app / 目錄運行它:

vendor/bin/yii serve --docroot=./web

在瀏覽器中開啟應用程式網址現在應該列印出“歡迎來到Yii2.0 微服務!”,它已經在 HomeController: :actionIndex()返回。

Info:在我們的範例中,我們已將預設應用程式名稱空間app 變更為micro, 以表示您不受此名稱的限制(如果您是這樣認為), 然後調整 controllers namespace 並設定正確的別名。

以上是使用 Yii2.0 建立微服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:Yii中文网。如有侵權,請聯絡admin@php.cn刪除
YII 2.0深水潛水:性能調整與優化YII 2.0深水潛水:性能調整與優化Apr 10, 2025 am 09:43 AM

提升Yii2.0应用性能的策略包括:1.数据库查询优化,使用QueryBuilder和ActiveRecord选择特定字段和限制结果集;2.缓存策略,合理使用数据、查询和页面缓存;3.代码级优化,减少对象创建和使用高效算法。通过这些方法,可以显著提升Yii2.0应用的性能。

YII RESTFUL API開發:最佳實踐和身份驗證YII RESTFUL API開發:最佳實踐和身份驗證Apr 09, 2025 am 12:13 AM

在Yii框架中開發RESTfulAPI可以通過以下步驟實現:定義控制器:使用yii\rest\ActiveController來定義資源控制器,如UserController。配置認證:通過添加HTTPBearer認證機制來確保API的安全性。實現分頁和排序:使用yii\data\ActiveDataProvider來處理複雜的業務邏輯。錯誤處理:配置yii\web\ErrorHandler來定制錯誤響應,如認證失敗時的處理。性能優化:利用Yii的緩存機制來優化頻繁訪問的資源,提高API性能。

高級YII框架:掌握組件和擴展高級YII框架:掌握組件和擴展Apr 08, 2025 am 12:17 AM

在Yii框架中,組件是可重用的對象,擴展是通過Composer添加的插件。 1.組件通過配置文件或代碼實例化,使用依賴注入容器提高靈活性和可測試性。 2.擴展通過Composer管理,快速增強應用功能。使用這些工具可以提升開發效率和應用性能。

yii主題和模板:創建美麗而響應式的接口yii主題和模板:創建美麗而響應式的接口Apr 07, 2025 am 12:03 AM

Yii框架的Theming和Templating通過主題目錄和視圖、佈局文件實現網站風格和內容生成:1.Theming通過設置主題目錄管理網站樣式和佈局,2.Templating通過視圖和佈局文件生成HTML內容,3.使用Widget系統嵌入複雜UI組件,4.優化性能和遵循最佳實踐提升用戶體驗和開發效率。

YII面試問題:ACE您的PHP框架面試YII面試問題:ACE您的PHP框架面試Apr 06, 2025 am 12:20 AM

在準備Yii框架的面試時,你需要了解以下關鍵知識點:1.MVC架構:理解模型、視圖和控制器的協同工作。 2.ActiveRecord:掌握ORM工具的使用,簡化數據庫操作。 3.Widgets和Helpers:熟悉內置組件和輔助函數,快速構建用戶界面。掌握這些核心概念和最佳實踐將幫助你在面試中脫穎而出。

YII數據庫管理:高級活動記錄和遷移YII數據庫管理:高級活動記錄和遷移Apr 05, 2025 am 12:17 AM

Yii框架中的高級ActiveRecord和遷移工具是高效管理數據庫的關鍵。 1)高級ActiveRecord支持複雜查詢和數據操作,如關聯查詢和批量更新。 2)遷移工具用於管理數據庫結構變更,確保安全更新schema。

YII測試:單位,功能和集成測試策略YII測試:單位,功能和集成測試策略Apr 04, 2025 am 12:16 AM

Yii框架支持單元測試、功能測試和集成測試。 1)單元測試驗證單個函數或方法的正確性。 2)功能測試關注系統整體功能,驗證用戶操作是否達預期。 3)集成測試驗證不同模塊或組件間的交互是否正確,確保系統整體運行正常。

YII安全硬化:保護您的應用程序免受漏洞YII安全硬化:保護您的應用程序免受漏洞Apr 03, 2025 am 12:18 AM

在Yii框架中,可以通過以下步驟來保護應用:1)啟用CSRF保護,2)實施輸入驗證,3)使用輸出轉義。這些措施分別通過嵌入CSRF令牌、定義驗證規則和自動HTML轉義來防範CSRF、SQL注入和XSS攻擊,確保應用的安全性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。