Yii2 使用控制台控制器设置 cron 作业


Yii2 set cron job using console controller

在 Yii2.0 中,我在控制台控制器中设置了用于发送邮件的 cron 作业。当我在提示中执行 cmd php yii cron 时,它的工作。

我需要每小时执行一次此文件。面板不是每小时执行一次,为什么?

你需要同时使用 php 和 yii 的绝对路径:

* */1 * * * /usr/bin/php /var/www/mysite/yii controller/action

这应该可以解决问题 - 前提是您提供正确的路径。

要了解 php 的完整路径是什么,请在控制台提示符下运行以下命令:

which php

你可以在 cron for cpanel 中设置这样的命令

usr/bin/curl -k http://xxxxxxx.com/cron

wget -O/dev/null http://xxxxxxx.com/cron

你的时间设置应该是

0 * *

* *

谢谢

0 */3 * * 你的命令在这里

创建控制台应用程序

预先模板已经有一个文件yii。而且没有必要以php的形式运行它,它是Linux脚本。

创建 cron 服务命令

在控制台/控制器中创建控制器

我已创建为测试控制器.php

<?php
namespace console'controllers;
use yii'console'Controller;
/**
 * Test controller
 */
class TestController extends Controller {
    public function actionIndex() {
        echo "cron service runnning";
    }
    public function actionMail($to) {
        echo "Sending mail to " . $to;
    }
}
?>

此控制器应使用控制台控制器名称空间

use yii'console'Controller;

如何运行它

运行方式

yii test

我已经通过运行在窗口上对其进行了测试

D:'xampp'htdocs'yii2>d:'xampp'php'php yii test
cron service runnning
D:'xampp'htdocs'yii2>

如何传递参数

yii test/mail [--to="ali@hackers.com.pk"]

在用于测试的窗口中,它运行为。

D:'xampp'htdocs'yii2>d:'xampp'php'php yii test/mail [--to="ali@hackers.com.pk"]
Sending mail to [--to="ali@hackers.com.pk"]