2016-06-13 7 views
0

yii2で自分のアクションメソッドを自動的に実行したいと思っています。私はコードをコンソール/コントローラに置いた。これはコードです:タスクスケジューラを使用してyii2スクリプトを実行する

MailController.php

<?php 

namespace console\controllers; 

use Yii; 
use yii\console\Controller; 
use Swift_TransportException; 

class MailController extends Controller 
{ 
    public function actionSend() 
    { 
     $mail = Yii::$app->mailer->compose() 
      ->setFrom('[email protected]') 
      ->setTo('[email protected]') 
      ->setSubject('Testing'); 
     try 
     { 
      $mail->send(); 
     } 
     catch (Swift_TransportException $ste) 
     { 
      echo 'error'; 
     } 
    } 
} 

?> 

それから私は、タスクスケジューラでアクションメニューからこの設定を行います。

プログラム/スクリプト:C:\ XAMPPの\ PHPの\のphp.exeにし

追加の引数(オプション):-f C:\ xamppの\ htdocsに\バル\が進ん\コンソール\コントローラ\ MailController.php

私はアクションを送り実行したい

。しかし、タスクスケジューラの結果は0xFFで、私は電子メールを取得しません。どうしたの?

答えて

1

あなたは、コントローラのアクションをこのようにコールする必要があります。

C:\xampp\php\php.exe c:\path\to\your\application\yii mail/send 

または

​​

あなたは直接コントローラスクリプトYiiの呼び出し、およびされていません。コントローラとアクション(ルート)はパラメータに過ぎません。

詳細については、hereまたはguideを参照してください。

+0

タスクスケジューラでこのコマンドをどこに配置するかを教えてください。代わりにメールを送信しようとしていないので、テーブルに行を挿入する必要があります。コンソールでコントローラ/アクションを実行すると、レコードを挿入できます。しかし、タスクスケジューラを実行しているときには、レコードはデータベースに保存されません。タスクスケジューラには2つのフィールドがあります。プログラムと議論。あなたの答えをどこに置くか。私はスケジューラで何らかのエラーに直面していません。完了したタスクが表示されます。 – Pravin

関連する問題