Para adicionar o email do restante em yii usando o crontab

como sugeri eu criei um File MessengerCommand.php sob 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!"; } } } 

e adicionou o comando yiic como

 $path = dirname(__FILE__); //echo $path; shell_exec( $path . "/protected/yiic messenger" ); 

e irá ativar o e-mail quando eu carregar o site ….

mas eu não quero atualizar o site .. Eu preciso fazer isso funcionar em segundo plano … Por favor, ajude-me.

Você pode usar as aplicações do console para realizar sua tarefa.

Em protected/commands crie um novo arquivo com Command sufix, por exemplo: MessengerCommand.php :

 < ?php class MessengerCommand extends CConsoleCommand { ....... 

Na class MessengerCommand você tem várias opções para criar a ação de comando . Nesta amostra, replaceemos o método run :

 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 .... } 

No diretório protected , crie um arquivo: messenger.php . Esse arquivo será o executável de comandos:

 < ?php $path = dirname(__FILE__); $output = shell_exec( $path . "/./yiic messenger" ); echo $output; 

Para testá-lo, no Linux / Unix, execute no console / terminal:

 cd /.../.../...your_protected_path php messenger.php 

Para testar no Windows, você precisa se referir ao seu caminho de localização php.exe ou definir php.exe nas variables ​​de ambiente do sistema e usar a equivalência yiic para o Windows

Para agendar tarefas automáticas, neste exemplo, execução diária, no Linux / Unix, você pode usar trabalhos cron :

No console / terminal:

 crontab -e 

No arquivo cron, adicione a tarefa agendada, diariamente, às 9h00. Lembre-se cron sintax: # minuto hora dia do mês mês dia da semana comando

 0 9 * * * php /full_path/protected/messenger.php 

Salve o arquivo e saia.

Para agendar tarefas automáticas no Windows, consulte seus documentos / ajuda na Internet .

Se você tiver erros, as aplicações da consola Yii usam seu próprio arquivo de configuração ( protected/config/console.php ). Erros comuns são conexão db incorreta, componentes, módulos em protected/config/console.php .

O Windows equivalente a um trabalho cron é uma tarefa agendada.

Uma tarefa agendada pode ser criada usando a linha de comando com schtasks

Um exemplo:

 schtasks /create /tn calculate /tr calc /sc weekly /d MON /st 06:05 /ru "System"