To add remainder email in yii using crontab(使用 crontab 在 yii 中添加剩余电子邮件)
问题描述
按照建议,我在 protected/commands
下创建了一个 File MessengerCommand.php 作为
as suggested I created a File MessengerCommand.php under protected/commands
as
class MessengerCommand extends CConsoleCommand
{
public function run($args)
{
/* if(ERunActions::runBackground())
{ */
$mail=Yii::app()->Smtpmail;
$mail->SetFrom("tsadmin@softthink.com", 'From NAme');
$mail->Subject ="hello";
$mail->MsgHTML("haiii workd");
$mail->AddAddress("rajesh.udutha@itaugments.com", "");
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
}else {
echo "Message sent!";
}
}
}
并添加 yiic
命令为
$path = dirname(__FILE__);
//echo $path;
shell_exec( $path . "/protected/yiic messenger" );
它会在我加载网站时触发电子邮件....
and it will trigger email when I load the site ....
但我不想刷新网站..我需要让它在后台运行..请帮助我.
but I dont wanna refresh the site ..I need to make this to run in background ..Please help me.
推荐答案
您可以使用 yii 控制台应用程序 来完成你的任务.
You can use yii console applications to accomplish your task.
在protected/commands
中创建一个带有Command
后缀的新文件,例如:MessengerCommand.php
:
In protected/commands
create a new file with Command
sufix, for example: MessengerCommand.php
:
<?php
class MessengerCommand extends CConsoleCommand
{
.......
在班级 MessengerCommand 你有几个创建选项命令动作.在此示例中,我们将覆盖 run
方法:
In class MessengerCommand you have several options to create the command action. In this sample we will override run
method:
public function run($args)
{
$birth_month = date("m");
$birth_day = date("d");
$criteria = new CDbCriteria;
$criteria->condition = "birth_month = $birth_month and birth_day = $birth_day";
$listScheduledRecords = Table::model()->findAll($criteria);
foreach($listScheduledRecords as $scheduled_record):
$this->send($scheduled_record);
endforeach;
}
public function send($scheduled_record)
{
....
your logic to send your email
....
}
在protected
目录下,创建一个文件:messenger.php
.该文件将作为命令执行器:
In protected
dir, create a file: messenger.php
. This file will be the command executer:
<?php
$path = dirname(__FILE__);
$output = shell_exec( $path . "/./yiic messenger" );
echo $output;
要在 Linux/Unix 上进行测试,请在控制台/终端中运行:
To test it, on Linux/Unix, run in console/terminal:
cd /.../.../...your_protected_path
php messenger.php
要在 Windows 上测试,您需要参考您的 php.exe 位置路径或在您的系统环境变量中设置 php.exe 和 在 Windows 上使用 yiic 等价
To test on Windows, you need to refer to your php.exe location path or set php.exe on your system environment variables and use yiic equivalence for Windows
要安排自动任务,在此示例中,每日执行,在 Linux/Unix 上,您可以使用 cron 作业:
To schedule automatic task, in this sample, daily execution, on Linux/Unix, you can use cron jobs:
在控制台/终端:
crontab -e
在 cron 文件中,添加计划任务,每天,在 9h00.记住 cron 语法:#minute hour day of month month day of week 命令
In cron file, add the scheduled task, daily, at 9h00. Remember cron sintax: # minute hour day of month month day of week command
0 9 * * * php /full_path/protected/messenger.php
保存文件并退出.
要在 Windows 上安排自动任务,参考到他们在 Internet 上的文档/帮助.
To schedule automatic task on Windows, refer to their docs / help on Internet.
如果有错误,Yii Console应用程序使用自己的配置文件(protected/config/console.php
).常见的错误是protected/config/console.php
中的db连接、组件、模块错误.
If you have errors, Yii Console applications use their own config file (protected/config/console.php
). Common mistakes are wrong db connection, components, modules in protected/config/console.php
.
这篇关于使用 crontab 在 yii 中添加剩余电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 crontab 在 yii 中添加剩余电子邮件


基础教程推荐
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 使用 PDO 转义列名 2021-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- HTTP 与 FTP 上传 2021-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01