Чтобы добавить остаток электронной почты в yii, используя crontab

как я предположил, я создал файл MessengerCommand.php под protected/commands как

 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" ); 

и он будет запускать электронную почту, когда я загружу сайт ….

но я не хочу обновлять сайт. Мне нужно сделать это для запуска в фоновом режиме. Пожалуйста, помогите мне.

Related of "Чтобы добавить остаток электронной почты в yii, используя crontab"

Вы можете использовать консольные приложения yii для выполнения своей задачи.

В protected/commands создайте новый файл с помощью Command sufix, например: MessengerCommand.php :

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

В классе MessengerCommand у вас есть несколько вариантов создания действия команды . В этом примере мы переопределим метод 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 .... } 

В protected каталоге создайте файл: messenger.php . Этот файл будет исполняться командой:

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

Чтобы протестировать его, в Linux / Unix запустите консоль / терминал:

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

Чтобы протестировать в Windows, вам нужно обратиться к вашему пути к пути php.exe или установить php.exe в переменных вашей системной среды и использовать эквивалент yiic для Windows

Чтобы запланировать автоматическую задачу, в этом примере, ежедневном исполнении, в Linux / Unix, вы можете использовать задания cron :

В консоли / терминале:

 crontab -e 

В cron-файле добавьте запланированную задачу ежедневно, в 9:00. Запомнить cron sintax: # минутный час день месяца месяц день недели команда

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

Сохраните файл и выйдите.

Чтобы запланировать автоматическую задачу в Windows, обратитесь к их документам / справочной информации в Интернете .

Если у вас есть ошибки, приложения Yii Console используют собственный файл конфигурации ( protected/config/console.php ). Общими ошибками являются неправильное соединение db, компоненты, модули в protected/config/console.php .

Окно, эквивалентное заданию cron, является запланированной задачей.

Запланированную задачу можно создать с помощью командной строки с помощью schtasks

Пример:

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