1

状況は次のとおりです。

/home/domain/scripts/piper.phpにある配管スクリプトにリダイレクトするドメイン電子メール(つまり* @ domain.com)にキャッチオールがあります。このパイパースクリプトはKohanaORM内にありませんが、他のすべてのファイルは含まれています。このpiper.phpファイル内でKohanaを使用してみたいと思います。

私は次のすべてを(失敗して)試しました:

コハナを含む

何を含める必要があるのか​​、さらに重要なことに、Kohanaが適切なコントローラーを決定するために使用するurl変数をオーバーライドする方法を理解できませんでした。また、これはキャッチオールパイパーであるため、コマンドの実行ほどHTTPを使用していません(私の知る限り)。

配管

私は以下に配管してみました:

/home/domain/public_html/index.php --uri="piper"

しかし、cPanelではこれが不可能になります。これは、宛先スクリプトのみを指定でき、適切なフラグなどは指定できないためです(何かが足りない場合を除く)。

PHP exec()

次の行を使用してみました。

exec("php /home/domain/public_html/index.php --uri=\"/piper\"")

stdinデータがexec()コマンド全体で維持されることを期待していましたが、ローカルホストでこれを実行でき、問題なく動作しますが、uriコマンドを認識させることはできませんでした。

http://www.coderelic.com/2011/10/creating-cron-jobs-in-kohana-3-x-is-a-piece-of-cake/を参照として使用していましたが、取得できません動作するものは何でも。

着信メールを確認して解析し、パラメーターに基づいてメールを送信できるように、これらのソリューションのいずれかに満足しています。

さらに情報が必要な場合はお知らせください。私は困惑しています。

4

3 に答える 3

0

確かに、結果を再現する方法がわからないため、これらの他の回答が正しいかどうかはわかりません。

私の状況でうまくいったController_Piperのは、で呼び出されるクラスを作成することでした/home/domain/scripts/piper.php。私がしたことは、コードをコピーし/home/domain/public_html/index.phpて以下を変更することでした:

echo Request::factory("/piper")
->execute()
->send_headers(TRUE)
->body();

これにより、コントローラーがロードされ、piperすべてが非常にうまく実行されます。それが最もきれいかどうかはわかりませんが、うまくいきます。

于 2012-11-07T22:03:36.363 に答える
0

/home/domain/public_html/index.php --uri="piper"それを行うための有効な方法になります。ホストがうまくいかず、それを指定できない場合は、代わりに bash スクリプトに入れて参照してください。

kohana の最近のバージョン (3.2 または 3.3) を使用している場合は、Minion を使用してコマンド ライン タスクを実行することをお勧めします。これがミニオンが設計されたものです。

于 2012-11-06T13:04:48.227 に答える
0

あなたがする必要があるのは、次のことだけです:

  1. スクリプトを変更piper.phpして有効な PHP クラスにします。
  2. /application/classes/フォルダーに入れます。

Kohana は、初期化中にクラス ファイル ( など) を自動的に読み込みますinclude

piperその後、クラスを通常のクラスとして使用できます$piper = new Piper; ...

UPD

Kohana 経由でメールを配信する必要があります。

たとえば、コントローラーを作成しますpipe(URLでルーティングし/pipeます):

public function action_pipe() {

    $pipe = new Pipe; // This creates new Pipe object (your emails serving class)

    $pipe->serve(); // Sserve emails within `serve()` method of Pipe class

}
于 2012-11-06T10:28:04.520 に答える