はまりにはまって、ようやく、さくらサーバでのcakePHPのcronができました (ToT)/
cakePHPのConsole用cake.phpから、作成したShellを呼び出すんですね。 Consle用のcake.phpは、/appフォルダから呼び出さないといけないらしい。 下記が、さくらのcronの実行コマンドになります。
cd /home/アカウント名/www/プロジェクト名/app/ ; /usr/local/bin/php /home/アカウント名/www/プロジェクト名/app/Console/cake.php Hoge
まず、appフォルダに移動して、PHPでコンソールのcake.phpを起動し、Hogeを渡しています。 Hogeはシェル名ですので、自分で作成した名前になります。実際に実行したいコードは、このシェルに書きます。
シェルは、cakePHP2.3ですと、/app/Console/Command/に、HogeShell.phpといった名前で保存します。これはシェル名がHogeの場合です。 HogeShell.phpの中身は、下記のようになります。
<?php class HogeShell extends AppShell { var $uses = array('User'); public function main(){ $this->log('hoge start!!!'); $this->out('hoge start!!!'); } }
これだけです。main関数の場合は、Hogeと指定するだけで、main関数が実行されますが、別の関数の場合は、関数名と共に呼び出す必要があり、Hoge func arg といった感じで、シェル名、関数名、引数を半角空白を入れながら続けて書けばよいようです。引数は、コントローラーと異なる受け取り方になります。
参考: Cakephp】【さくらサーバー】【cron】cakephpでさくらサーバーのcronを使いたい... cakephpのbatch実行方法について Console and Shells