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