【问题标题】:Why does the console controller behave differently than the web controller? (Yii2)为什么控制台控制器的行为与 Web 控制器不同? (Yii2)
【发布时间】:2017-08-06 08:14:36
【问题描述】:

我有一个这样的脚本:

$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 行。

我做错了什么?

【问题讨论】:

    标签: php cron yii2 console


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多