symfony 1.4 で簡単メンテナンスモード
inspired by
- CodeIgniterで簡単メンテナンスモード - localdisk
- Pinocoで簡単メンテナンスモード - なんたらノート第三期ベータ
- Silex で簡単メンテナンスモード - ぷぎがぽぎ
- CakePHPで簡単メンテナンスモード | php-tips.com
- http://blog.nully.org/2011/05/28/maintenance-mode-with-zend-framework/
流行に乗っかって symfony 1.4 でもやってみます。
メンテナンス画面を用意する
プロジェクトルート/config/unavailable.php にHTMLファイルを用意します。
拡張子はphpになっていますが、素のHTMLとして書いた方がいいです。
./config/unavailable.php
<!DOCTYPE HTML> <html lang="ja-JP"> <body> <h1>メンテナンス中</h1> </body> </html>
設定でロック機能を有効にする
標準の設定だと、このunavailable.phpを利用する機能は無効になっています。
なので、以下のようにアプリケーションに設定を書いておきます。
apps/アプリケーション名/config/settings.yml
all: check_lock: true
コマンドで切り替える
あとは、コマンドを叩くだけです。
メンテナンス画面に切り替える場合
$ ./symfony project:disable prod
タスクに渡す引数は環境名です。通常は本番環境だと思うので、標準だとprodになります。
また、環境名の後にアプリケーション名を渡せば特定のアプリケーションだけメンテナンス画面にすることもできます。
メンテナンス画面を終わる場合
$ ./symfony project:enable prod
これでunavailable.phpを呼び出さなくなります。
ドキュメントでは
symfony 1.x legacy website
あたりが参考になります。
フレームワーク側で用意されているので簡単すぎます。
この仕組みを知っているかどうかというところだけですw
時間指定でメンテナンス画面に切り替える
CakePHPのメンテナンスプラグインは時間指定できて便利だと思ったのでsymfonyで同じことを簡単に実装する方法を追記です。
といっても、タスクが用意されているのでこのタスクをコンソールから指定時間にたたいてくれるようにatコマンドを使うだけです。
$ /PATH_TO_SF_PROJECT/symfony project:disable prod |at 21:00 12/31/2011
こうしておけば、指定時間にメンテナンス画面に自動的に切り替わります。symfonyは直接関係ないですがタスクで用意されているのでできる便利機能ですね。
[追記] ドキュメントへのリンクと説明を追加しました。
[追記2] この機能を有効にするためにsettings.ymlへの設定が必要だったのを忘れていたので追記しました。Thanks to @jiskanulo
[追加3] CakePHPの場合へのリンクと指定時間にメンテナンス画面にする方法を追加