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
edisCache',
            'redis' => [
                'hostname' => '192.168.23.32',
                'port' => 6379,
                'database' => 0
            ],
        ],
        //数据缓存
        'cache01' => [
            'class' => 'yii
edisCache',
            '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 consolecontrollers;

use commonmodelsRedis;
use yiiconsoleController;

/**
 * 小demo
 * Class DemoController
 * @package consolecontrollers
 */
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、总结

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

参考资料

原文地址:https://www.cnblogs.com/renzhicai/p/7742536.html