3

CakePHP アプリに次のシェルがあります。

<?php 

class MyShell extends Shell {

    public function sendEmail() {

        App::uses('CakeEmail', 'Network/Email');

        $email = new CakeEmail();

        $email->from('cameron@driz.co.uk');

        $email->to('cameron@driz.co.uk');

        $email->subject('Test Email from Cron');

        $result = $email->send('Hello from Cron');

    }

}

?>

Media Temple Grid Service ホストでのテストとして、5 分ごとに実行しようとしています。

/home/####/domains/driz.co.uk/html/app && Console/cake my_shell send_email 

cd /home/####/domains/driz.co.uk/html && Console/cake my_shell send_email 

cd /home/####/domains/driz.co.uk/html/app && Console/cake my_shell send_email 

php /home/####/domains/driz.co.uk/html/app/Console/Command/MyShell.php

上記のすべてを試しましたが、どれも機能しません...理由はありますか?

(注:実際のコマンドとは別に管理パネルでこれらを指定するため、時間が欠落していることに注意してください)

Media Temple で CakePHP の cron ジョブを実行した経験のある人はいますか? MT サポートに問い合わせたところ、最初の 3 行はファイルへの直接コマンドではないため機能しないとのことでした (明らかに、CakePHP のドキュメントは端末専用です)。

4

1 に答える 1

3

これを機能させるために私がしたことは次のとおりです。

一部の出力を含めるように電子メール スクリプトを変更しました。

class MyShell extends Shell {
    public function sendEmail() {
        App::uses('CakeEmail', 'Network/Email');
        $email = new CakeEmail();
        $email->from('user@domain.com');
        $email->to('user@domain.com');
        $email->subject('Test Email from Cron');
        $result = $email->send('Hello from Cron');
        $this->out('Email sent successfully.');
    }
}

次に、コンソールでテストして、動作することを確認しました。上記のコードでは、"MyShell" の "Shell" サフィックスはドキュメントごとに省略されており、2 番目のパラメーターは関数名です。これは、アプリケーションのルート /home/#####/domains/mydomain.com/html/cake/cakephp/app から動作する CLI コマンドです。

Console/cake my sendEmail

出力:

Welcome to CakePHP v2.4.1 Console
---------------------------------------------------------------
App : app
Path: /nfs/c##/h##/mnt/#####/domains/mydomain.com/html/cake/cakephp/app/
---------------------------------------------------------------
Email sent.

MT (gs) ダッシュボードのコマンド ボックスにある私の値は、これに従って構築されました。以下が含まれます。

cd 'app_root' && Console/cake 'class_name_sans_shell' 'function_name'

上記のコードの場合、結果は次のようになります。

cd /home/#####/domains/mydomain.com/html/cake/cakephp/app && Console/cake my sendEmail

この場合、「Console/cake」が実行可能ファイルであるため、実行しているプログラムであることに注意してください。

于 2013-10-10T20:36:59.700 に答える