假设Yii项目路径为 /home/apps/
1. 创建文件 /home/apps/protected/commands/crons.php
<?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
<?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的各种方法
<?php 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/下新建其他类,使用命令行执行。