Posted on

CakePHP2系でCronを動かす

今までCakePHP1系ではCronを動かした事はあったのですが
CakePHP2系でCronを動かすのが初めてで動くようにするのに
つまづいたので備忘録として残しておきます。

シェルファイルを作るのはCakePHP1系と同じなのですが内容は次のようになります。
(ファイルへのパスは今回設置した環境用になっていますので適時ご自身の環境に合わせて下さい)
1系だと

#!/bin/sh
/var/www/cakephp/cake/console/cake cron action_name -app /var/www/cakephp/app

2系だと

#!/bin/sh
/usr/bin/php /var/www/cakephp/lib/Cake/Console/cake.php Cron action_name -app /var/www/cakephp/app

/usr/bin/phpがPHPの実行ファイルを指定
作ったシェルファイルをパーミッション755にしておきます。
/var/www/cakephp/lib/Cake/Console/cake.phpをパーミッション755にします。

次に実際の処理内容なのですが
1系の場合は/cakephp/app/vendors/shells/cron.phpに書いていたのを
2系の場合は/cakephp/app/Console/Command/にXXXXShell.phpというファイルを作ります。

内容は

Staff->find('all'); // コントローラーから呼ぶようにModelを呼べる
    }
}
?>