項目開發中經常會需要使用到定時任務,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
注意:設置別名后參數之間使用一個橫杠連接