2012-01-15 19 views
0

共有サーバーにcPanelがあり、毎日シェルスクリプトを実行する必要があります。Cakephp 2.0、CPanelとシェルスクリプト

このスクリプトは、毎日ウェブページをスクラップするコントローラ機能を呼び出す必要があります。

私の問題は、この機能を呼び出すシェルスクリプトをcpanelのcronジョブで追加する方法がわかりません。どのように私はこれをすべて行うのですか?

ありがとうございます!


私は私の質問を延長するつもりです。

私は、このコード "TestTask.php" があります。

class TestTask extends Shell { 

    function main() { 
     $this->out('Hello world.'); 
    } 

    function execute() { 
     $this->out('Hello world 2.'); 
    } 
} 

それは次の場所にあります:/home/myuser/public_html/app/Console/Command/Task

そして、私のcronジョブは、このようなものです:

* * * * * php /home/myuser/public_html/app/Console/cake.php test -app /home/myuser/public_html/app >> /home/myuser/public_html/file.log 

それはだ最後の部分を出力をファイルに記録します。

全く動作しません。

お願いします!

+0

sshアクセス権がある場合は、crontab -eコマンドで実行できると思います。 –

答えて

0

は、ここで私は私のサーバー上で使用していますcronジョブのためのコマンドです:time/app/Console/Command/TimeShell.phpに位置、私のシェルです

/home/path-to-cake/lib/Cake/Console/cake -app /home/path-to-cake/app time

。これはシェルを実行する方法です。

質問のもう一方の部分では、タスクはシェル内から呼び出される必要があります。あなたが投稿したコードから、あなたはタスクと少しシェルを混同しているようです。シェルには、コントローラーにコンポーネントがあるように、タスクを含めることができます。シェルが引数なしで呼び出された場合は、main();が必要です。タスクを実装する必要はありません。一方、タスクはexecute();メソッドを実装する必要があります。

シェルからタスクを実行するには、TestShellクラスにpublic $tasks = array('Test');を追加してください。あなたは、コントローラでコンポーネントを使用するだけのようなあなたのシェルでこのタスクを使用することができます。$this->Test->whatever();

CakePHPの2.0シェルとタスクの詳細については、一見here

これが助けた希望を持っています!