zoukankan      html  css  js  c++  java
  • 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、总结

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

    参考资料

  • 相关阅读:
    pycharm鼠标光标变成黑色方块
    华章8月书讯,夏日静心好读书
    测试既是一门科学,也是一门艺术
    计算机科学与技术专业教指委将成立“物联网工程专业教学研究专家组”
    【七夕送好书】转微博获赠书!
    孟岩谈《C++程序设计原理与实践》
    【有奖活动】华章IT15周年,评选您心中最有影响力的10种图书
    《测试之美》连载:创建开源的QA社区
    Web前端开发之“常见模块你真的很了解吗?”
    测试驱动开发简介
  • 原文地址:https://www.cnblogs.com/renzhicai/p/7742536.html
Copyright © 2011-2022 走看看