Yii2中Console定時任務


 

項目開發中經常會需要使用到定時任務,YIi2中有一個功能豐富的控制台命令,今天主要介紹一下如何使用控制台命令編寫以及運行定時任務。

一、入口文件

和 web 程序 index.php 入口文件一樣,控制台命令也有一個入口文件,根目錄下的 yii 文件。
可以在入口文件下運行:php yii

 

二、定時任務編寫

下載 Yii 框架后,可以看到有個 console 目錄,里面有完整的目錄結構:配置文件、控制器、模型、日志等。

1、新建 TestController.php 文件

這時再運行 php yii 命令可以看到末尾多了有關 test 控制器下寫的 action 方法,直接運行這個命令就可以了。

2、運行 php yii test/test-console

 

三、定時任務傳參

上面已經介紹了如何編寫定時任務,接下來介紹一下如何傳參:
1、修改 TestController.php 文件

<?php
namespace console\controllers;

use yii\console\Controller;

class TestController extends Controller
{

    /**
     * @var 參數1
     */
    public $param1;

    /**
     * @var 參數2
     */
    public $param2;

    /**
     * 設置參數
     * @param string $actionID
     * @return array|string[]
     */
    public function options($actionID)
    {
        return ['param1', 'param2'];
    }


    /**
     * 測試腳本
     */
    public function actionTestConsole()
    {
        echo $this->param1 . PHP_EOL;
        echo $this->param2 . PHP_EOL;
    }
}

2、上述代碼指定了兩個參數 param1、param2,通過命令 php yii (控制器)/(方法名) --(參數1)=(參數值) ==(參數2)=(參數值) …

執行:php yii test/test-console --param1=hello --param2=world

 

四:參數設置別名

1、傳參時可以簡化參數,設置別名:

<?php
namespace console\controllers;

use yii\console\Controller;

class TestController extends Controller
{

    /**
     * @var 參數1
     */
    public $param1;

    /**
     * @var 參數2
     */
    public $param2;

    /**
     * 設置參數
     * @param string $actionID
     * @return array|string[]
     */
    public function options($actionID)
    {
        return ['param1', 'param2'];
    }


    /**
     * 參數設置別名
     * @return array
     */
    public function optionAliases()
    {
        return ['m1' => 'param1', 'm2' => 'param2'];
    }


    /**
     * 測試腳本
     */
    public function actionTestConsole()
    {
        echo $this->param1 . PHP_EOL;
        echo $this->param2 . PHP_EOL;
    }
}

2、執行命令:php yii test/test-console -m1=hello -m2=world

注意:設置別名后參數之間使用一個橫杠連接

 


免責聲明!

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



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