为什么控制台控制器的行为与Web控制器不同? (Yii2)

时间:2017-08-06 08:14:37

标签: php cron yii2 console

我有一个这样的脚本:

$timeNow = new \DateTime(date("Y-m-d H:i:s"), new \DateTimeZone('UTC'));
    $interval = new \DateInterval('PT'. Yii::$app->params['intervalMinForDescicionIssue'] .'M');
    $timeCorrect = $timeNow->sub($interval);
    $issues = Issue::find()
        ->where(['between', 'createdDate', $timeCorrect->format("Y-m-d H:i:s"), date("Y-m-d H:i:s")])
        ->all();

    foreach ($issues as $issue) {

        $issue->countMin++;

        if($issue->countMin >= Yii::$app->params['intervalMinForIssuePrice']){

            $issue->price++;
            $issue->countMin = 0;

        }

        $issue->save();

如果要通过SiteController中的actionTest启动它,一切正常。 如果在basic / commands / CronController中每分钟都通过cron上的控制台运行,由于某种原因它会更新数据,而不是在表的所有行中,而是严格地在6行中。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

控制台控制器的行为与Web控制器的行为不同。问题是将cronjob的时间设置为一分钟。尝试将时间设置为5分钟,然后查看执行的行数。这个数字可能会增加

答案 1 :(得分:0)

您可以使用不同的配置(例如params / params-local)。