Как настроить cron в yii приложения?

Запускаю на виртуальном хосте cron задание
<?php
$_SERVER["argv"][0]='Cron';
$_SERVER["argv"][1]='Cron';

if (!ini_get('register_argc_argv')) {
    if(ini_set('register_argc_argv', '1')){
        echo "Установилось \n";
    } else {
        echo "Не удалось установить \n";
    }
}
// change the following paths if necessary
$yiic=dirname(__FILE__).'/../../yii-1.1.16.bca042/framework/yiic.php';
$config=dirname(__FILE__).'/config/console.php';
$_SERVER['SCRIPT_FILENAME'] ='__DIR__';
require_once($yiic);
Yii::createConsoleApplication($config)->run();
?>

class CronCommand extends CConsoleCommand
{
    public function run($args)
    {
        $criteria=new CDbCriteria;
        $criteria->compare('id_status',1);
        $criteria->addCondition('date_started <=NOW()');
        $started=MusicTest::model()->findall($criteria);
        foreach($started as $model){
            $model->id_status=2;
        }
        $criteria=new CDbCriteria;
        $criteria->compare('id_status',2);
        $criteria->addBetweenCondition('date_finished','0000-00-00 00:00:01',date(" Y-m-d H:i:s") );
        $finish=MusicTest::model()->findall($criteria);
        foreach($finish as $model){
            $model->id_status=3;
            $model->save();
        }
    }

}

Выдает ошибку неопределенно $_SERVER['SCRIPT_NAME']
Сам скрипт выполняется и изменения в БД производятся, но не выполняются действия в beforesave(), где вызываются действия из компонентов. Как решить эту проблему?
  • Вопрос задан
  • 1046 просмотров
Пригласить эксперта
Ответы на вопрос 1
@matperez
Зачем вам вот эта вся свистопляска?
$_SERVER["argv"][0]='Cron';
$_SERVER["argv"][1]='Cron';


Вам просто нужно перейти в папку с вашим yiic, который, как вы говорите у вас работает через ssh, и запустить его.

например:
50 3 * * * cd /usr/local/www/site.com/ && php ./yiic cron
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы