Web Tech Log by 1KB

Icon

Web開発、Webデザイン、SEO、携帯コンテンツなどWebにまつわるテクノロジーを追っかけるブログ。旧名「Web屋に復帰した人間のリハビリ日記」

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

参考

CakePHPで404エラー画面のレイアウトを「default.ctp」ではなく別のレイアウトを指定する

CakePHP製のPC+携帯混合のWebサイトで、404のエラー画面が、携帯サイトでもPCと同じでかくてたくさんの画像いっぱいのエラー画面になって問題になりました。

原因を調べていたら、携帯版でもエラー画面はPC用レイアウトとして使っていた「default.ctp」を使用してしまうことが判明(携帯版では「mobile.ctp」を使用していた)。

そこで、CakePHPで404のエラー画面を別のレイアウトで表示するように変更してみた。

<?php
class AppError extends ErrorHandler {

    function error404($params) {
        $this->controller->layout = "simple";
        parent::error404($params);
    }
}
?>

携帯でもPCでも表示できるような簡単なHTMLでレイアウトファイル「app/views/layouts/simple.ctp」を作成する。これで携帯版でもPCばりの画像が出なくなり、シンプルなエラー画面になりました。

参考

CakePHP 1.2 チートシート

CakePHP 1.2 のCheatSheetを発見。1.1用は見たことありましたが、1.2用は初見のような気がします。

http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf

20090117cakecheat

情報元:某有名巨大掲示板より

CakePHP 1.2Stable リリース

ついこの間 1.2Rc4リリースのエントリーを書いたと思ったら、すぐにStableがリリースされてました…

CakePHP情報まとめ

いつの間にやらPHPでもアプリケーションフレームワークがそろってきました。
昔はフレームワークと言えばJavaだたんですが、PHPでも充実してきました。
かく言う私もかじり始めています。自分は職業プログラマーではないのですが(なんちゃってプログラマーです。おぶじぇくとしこうって何?って言うレベル)、衰えてきた脳みそに基本から一生懸命たたき込んでいる状況です。
以前とあるプロジェクトでGREE社謹製のEthnaをかじったことあるのですが、そのときはサーバ周り担当だったので環境構築しただけって感じだったので苦労してます。
で、Ethnaでもよかったんですが(GREEのCMおもしろいしね)、数あるPHPフレームワークの中からCakePHPをチョイスしました。
Ethnaにしなかったのは、作成したWebアプリケーションのURLが汚いのが最大の理由ですかね。URLにいろいろなパラメータがついてSEO的に汚いのですよ。CakePHPはデフォルトの設定でSEOに強いきれいなURLになります。
クローズドな業務アプリケーションであれば、どうでもいいんですが、公開するWebサイトならばSEOはとても重要です。まあEthnaでもmod_rewriteで工夫すればきれいなURLになるんでしょうけど。

というわけでCakePHPの公式情報をまとめてみました。

上が1.1用で下が1.2用かな?
以下も押さえておきます

蛇足
バリバリなプログラマーさんに言わせるとCakeは許せない的なところがあるらしいですが、私にはまだわかりません!!

固定ページ

킹ēǂ݂uOp[c