Heim >Backend-Entwicklung >PHP-Tutorial >yii框架通过控制台命令创建定时任务示例_PHP

yii框架通过控制台命令创建定时任务示例_PHP

WBOY
WBOYOriginal
2016-06-01 11:54:581102Durchsuche

假设Yii项目路径为 /home/apps/

1. 创建文件 /home/apps/protected/commands/crons.php

复制代码 代码如下:

$yii = '/home/apps/framework/yii.php';

require_once($yii); 

$configFile = dirname(__FILE__).'/../config/console.php';

Yii::createConsoleApplication($configFile)->run();

2. 创建需要的配置文件 /home/apps/protected/config/console.php,配置需要的组件、数据库连接,日志等信息,格式类似主配置文件main.php

复制代码 代码如下:
return array(
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',

    'name'=>'Emergency',

    'import'=>array( 
            'application.models.*',
            'application.components.*',
            'application.extensions.*',
    ),

    'components'=>array(
        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'info, warning, error',
                ),
            ),
        ),
        'db'=>array(
            'class'=>'application.extensions.PHPPDO.CPdoDbConnection',
            'pdoClass' => 'PHPPDO',
            'connectionString' => 'mysql:host=xxxx;dbname=xxx',
            'emulatePrepare' => true,
            'username' => 'xxx',
            'password' => 'xxx',
            'charset' => 'utf8',
            'tablePrefix' => 'tbl_',
        ),
    ), 

    'params' => require('params.php'),
);

3. 在 /home/apps/protected/commands/ 下新建 TestCommand 类,继承 CConsoleCommand,在TestCommand中,可以使用项目的配置信息和Yii的各种方法

复制代码 代码如下:
class TestCommand  extends CConsoleCommand 

    public function run()
    { 
        ...
    } 
}

4. 创建定时任务

复制代码 代码如下:
$ crontab -e

插入

复制代码 代码如下:
1 * * * * /home/php/bin/php -f /home/apps/protected/commands/crons.php Test &

即为每小时的第一分钟执行TestCommand类中的内容,类似的可以在/home/apps/protected/commands/下新建其他类,使用命令行执行。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn