Yii2之控制台命令篇(console)


控制台命令

Yii 中有一個擁有豐富功能的控制台,它們主要用於創建網站后台處理的任務。在項目根目錄下執行相關操作,有意思的事,可以通過 yii 自帶的功能,列出當前已有的命令。

1、查看當前項目控制台已有的腳本命令

正如你在截圖中看到,Yii 中已經定義了一組默認情況下可用的命令:

  • AssetController - 允許合並和壓縮你的 JavaScript 和 CSS 文件。 在 資源 - 使用 asset 命令 一節可獲取更多信息。
  • CacheController - 清除應用程序緩存。
  • FixtureController - 管理用於單元測試 fixture 的加載和卸載。 這個命令的更多細節在 Testing Section about Fixtures.
  • HelpController - 提供有關控制台命令的幫助信息, 這是默認的命令並會打印上面截圖所示的輸出。
  • MessageController - 從源文件提取翻譯信息。 要了解更多關於這個命令的用法,請參閱 I18N 章節.
  • MigrateController - 管理應用程序數據庫遷移。 在 數據庫遷移章節 可獲取更多信息。
  • ServeController - Allows you run PHP built-in web server.

除了上面展示出的yii自帶的控制台命令,其余的命令就是你自己在console下實現的腳本命令(就是你在console下寫的控制器,也可以通過上面的方式打印並展示在其中)。比如下面

對應着下面:

- log                                定時執行清除一個月之前的所有日志記錄
    log/init                         清除日志

2、接着,我們來調用一下Yii自帶的清除應用程序緩存這一命令功能

首先我們查看一下當前應用程序有哪些緩存key

發現有兩個應用緩存,這是因為我們在components里配置了這兩個緩存應用

return [
    'components' => [
        //默認緩存
        'cache' => [
            'class' => 'yii\redis\Cache',
            'redis' => [
                'hostname' => '192.168.23.32',
                'port' => 6379,
                'database' => 0
            ],
        ],
        //數據緩存
        'cache01' => [
            'class' => 'yii\redis\Cache',
            'redis' => [
                'hostname' => '192.168.23.32',
                'port' => 6379,
                'database' => 1
            ],
        ],
    ]
]

現在我們清除其中的cache01

3、創建一個自己的控制台命令

<?php
/**
 * Created by PhpStorm.
 * User: 168
 * Date: 2017/10/23
 * Time: 14:00
 */

namespace console\controllers;

use common\models\Redis;
use yii\console\Controller;

/**
 * 小demo
 * Class DemoController
 * @package console\controllers
 */
class DemoController extends Controller
{
    /**
     * 添加緩存
     */
    public function actionAdd()
    {
        $hashKey = 'caiyu';
        $field = 'nine';
        $val = 9;
        Redis::hsetCache($hashKey, $field, $val, $expire = 0, $selectDb=0);
    }

    /**
     * 刪除緩存
     */
    public function actionDel()
    {
        $hashKey = 'caiyu';
        //
        $field = ['nine', 'six'];
        Redis::hdelCache($hashKey, $field, 0);
    }
}

我們就可以在項目根目錄下執行上面創建的命令

[root@mopon-v-dev-1 daoyan_yt]# /usr/bin/php yii demo/add
[root@mopon-v-dev-1 daoyan_yt]# /usr/bin/php yii demo/del

4、總結

控制台命令可以實現很多功能,比如數據庫遷移、定時任務、清除應用臨時緩存等諸多自動化維護的功能。在實際項目開發中還是會經常用到的。

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM