Webアプリフレームワークの「簡単メンテナンスモード」コンテストにエントリーされる方はいらっしゃいませんか。http://d.hatena.ne.jp/tanakahisateru/20110527/1306495794 (いろんなフレームワークの性格が見えて面白いと思う)http://twitter.com/tanakahisateru/status/74078560624721920
ということで、CakePHPの場合です。
CakePHPの場合、routes.phpで単純に、
Router::connect('/*', array('controller' => 'pages', 'action' => 'display', 'maintenance'));
とやっても、うまくいきません。
じゃあどうするのかというと。
Maintenance plugin for CakePHP
というプラグインを使うと簡単に実装できます。(公開してくださっているFusicさんに感謝!
まず、プラグインをインストール。git をつかっているなら
git submodule add -f https://github.com/fusic/maintenance.git app/plugins/maintenance
次に、app_controller.phpの$componentsを書き換えてMaintenanceコンポーネントを有効にします。
このとき、メンテナンス用画面のURLを’maintenanceUrl’で指定するのを忘れずに。 (今回は /pages/maintenance を指定しました。
メンテナンス画面もapp/views/pages/maintenance.ctpとして作っちゃいます。
メンテナンスモードにするには、app/config/bootstrap.phpに
としてフラグを立てればOKです。
で、このプラグインのすごいところは、IPによるメンテナンスON/OFFや、メンテナンスモードでも見せる部分を指定できたり、時限設定ができたりするところ。
詳しくは、プラグインのREADMEを読んでみてください。
(中の人がもっと詳細な記事書いてくれないかなー。
参考リンク: CodeIgniterで簡単メンテナンスモード - localdisk Pinocoで簡単メンテナンスモード - なんたらノート 第二期 Silex で簡単メンテナンスモード - ぷぎがぽぎ symfony 1.4 で簡単メンテナンスモード - ぷぎがぽぎ