2009 年 3 月 16 日
CakePHP 1.2 シェル機能でバッチ処理やコマンドをサーバー側で実行する
CakePHPは自身のフレームワークを活用したコードをサーバー側で実行するシェル機能があります。ブラウザのHTTPリクエストに頼らず実行でき、バッチ処理などに活用できます。忘れないうちにメモっておこう。
/path/to/app/vendors/shells/batch.php
にファイルを作る。「batch.php」としたが名前は何でも良い。
<?php class BatchShell extends Shell { var $uses = array('Model');//モデルを使用する場合指定しておく function main() { //ここにコードを書く } } ?>
デフォルトでは、main()メソッドが実行されます。
次にシェルスクリプトを用意。
/path/to/sh/batch.sh
#!/bin/sh /usr/local/bin/php /path/to/cake/console/cake.php batch -app /path/to/app
シェルスクリプトはあらかじめ実行権限を付けておく。
スクリプト中のパスはサーバーに合わせて適時変更します。
あとはLinuxの場合、cronで実行するように設定する。
スクリプト中の以下のコマンドを直接cronで設定しても動くと思う。
/usr/local/bin/php /path/to/cake/console/cake.php batch -app /path/to/app
参考