12

Cakephp で cron ジョブを使用して、Ubuntu でコントローラーのアクションを呼び出すにはどうすればよいですか? crontab を使用して実行しようとしていますが、機能していません。

4

4 に答える 4

24

シェルを使用する

cron ジョブで CakePHP アプリケーションを使用する「Cake Way」は、シェルを作成し、それを cron ジョブとして呼び出すことです。

つまり、タスクを実行するためのシェルを作成し、それを crontab ( crontab -eLinux マシン上) に追加します。

0 * * * *       cd /path/to/app/ && Console/cake your_shell_name params

シェルの作成と cron でのシェルの使用については、ドキュメントで説明されています。

于 2012-12-19T16:32:08.060 に答える
1

MVC のビュー レイヤーは必要ないため、通常のコントローラーで記述する代わりに Cake シェルを使用することもお勧めします。これにより、beforeFilter、beforeRender などのコントローラーのさまざまなコールバック関数のメモリ負荷も軽減されます。

次に **nix cron タブに、CakeShell に記述された cron のエントリを作成します。

于 2013-09-27T06:13:49.070 に答える
0

これは、次の手順で非常に簡単に行うことができます -:

1)コンソール/コマンドでHelloShell.phpとしましょうシェルを作成します

 <?php
    class HelloShell extends AppShell
    {
    public function main()
    {
    //Your functionality here...
    }

    }

    ?>

このシェルは Console/cake hello から呼び出すことができます

2) コマンドcrontab-eを記述します。これにより、デフォルトのエディターまたは選択したエディターが開きます。5 分ごとにシェルを実行する必要があるため、次のように記述します。

  */5 * * * * /PATH TO APP/Console/cake hello

理解を深めるために、https://www.youtube.com/watch?v=ljgvo2jM234を参照してください。

3)シェルでコントローラーのアクションを呼び出したい場合は、その特定のコントローラーをインポートするだけで、AppControllerとしましょうApp::uses('AppController', 'Controller');

次に、シェルで AppController オブジェクトを作成します。

$object =new AppController();
$object->func_in_controller();

これで、関数のパラメーターにシェルでアクセスできるようになりました。$object->func_param;

ありがとう!

于 2017-10-05T09:20:32.550 に答える
-1

URL を直接呼び出す cron ジョブを作成できます。

php -f http://yoursite.com/yourController/yourAction/params > /dev/null

または、相対パスでも実行できます。

php -f CakePHP/yourController/yourAction/params > /dev/null

cronunix の使用方法については、こちらを参照してください。

とにかく、アクションが cron ジョブからのみ利用可能であり、他のユーザーが URL で利用できない場合は、CakePHP Shell を使用することをお勧めします。

cron ジョブから Cake Shell を呼び出す方法の詳細については、CakePHP のドキュメントを参照してください。

于 2012-12-19T09:57:47.377 に答える