Cakephp で cron ジョブを使用して、Ubuntu でコントローラーのアクションを呼び出すにはどうすればよいですか? crontab を使用して実行しようとしていますが、機能していません。
4 に答える
シェルを使用する
cron ジョブで CakePHP アプリケーションを使用する「Cake Way」は、シェルを作成し、それを cron ジョブとして呼び出すことです。
つまり、タスクを実行するためのシェルを作成し、それを crontab ( crontab -e
Linux マシン上) に追加します。
0 * * * * cd /path/to/app/ && Console/cake your_shell_name params
シェルの作成と cron でのシェルの使用については、ドキュメントで説明されています。
MVC のビュー レイヤーは必要ないため、通常のコントローラーで記述する代わりに Cake シェルを使用することもお勧めします。これにより、beforeFilter、beforeRender などのコントローラーのさまざまなコールバック関数のメモリ負荷も軽減されます。
次に **nix cron タブに、CakeShell に記述された cron のエントリを作成します。
これは、次の手順で非常に簡単に行うことができます -:
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;
ありがとう!
URL を直接呼び出す cron ジョブを作成できます。
php -f http://yoursite.com/yourController/yourAction/params > /dev/null
または、相対パスでも実行できます。
php -f CakePHP/yourController/yourAction/params > /dev/null
cron
unix の使用方法については、こちらを参照してください。
とにかく、アクションが cron ジョブからのみ利用可能であり、他のユーザーが URL で利用できない場合は、CakePHP Shell を使用することをお勧めします。
cron ジョブから Cake Shell を呼び出す方法の詳細については、CakePHP のドキュメントを参照してください。