edo1z blog

プログラミングなどに関するブログです

cakePHP2.3 cron (さくらサーバ)

はまりにはまって、ようやく、さくらサーバでの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