Yii2之控制台命令篇(console)

控制台命令

Yii 中有一个拥有丰富功能的控制台,它们主要用于建立网站后台处理的任务。在项目根目录下执行相关操做,有意思的事,能够经过 yii 自带的功能,列出当前已有的命令。php

一、查看当前项目控制台已有的脚本命令

正如你在截图中看到,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下写的控制器,也能够经过上面的方式打印并展现在其中)。好比下面web

对应着下面:redis

- log                                定时执行清除一个月以前的全部日志记录
    log/init                         清除日志

二、接着,咱们来调用一下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缓存

三、建立一个本身的控制台命令

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

咱们就能够在项目根目录下执行上面建立的命令yii

[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

四、总结

控制台命令能够实现不少功能,好比数据库迁移、定时任务、清除应用临时缓存等诸多自动化维护的功能。在实际项目开发中仍是会常常用到的。

参考资料

相关文章
相关标签/搜索