在 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"]