CakePHPクッキング

メンテナンスモードを簡単実装できるMaintenance plugin

開発環境:CakePHP2.5.1

サイト全体へ影響するようなバグ修正や機能追加などのために、一時的にサイトをメンテナンスモードにする必要がある場合があります。
そのような時に簡単にメンテナンスモードに変更できるプラグインが Maintenance plugin for CakePHP です。
それでは導入手順を見ていきましょう。

Maintenance pluginをダウンロード

まず最初はGithub上に公開されているソースをダウンロードします。
https://github.com/fusic/maintenance

リネームして設置

ダウロードしたファイルを解凍し、Maintenance とリネームして app/Plugin/Maintenance に設置します。

bootstrap.phpに読み込む設定を追記

設置したMaintenanceを読み込むために、app/Config/bootstrap.php に下記のコードを追加します。

AppControllerでインクルード

Maintenanceの読み込みが完了したので、実際に利用するために app/Controller/AppController.php でコンポーネントを呼び出します。

設定として、maintenanceUrl にメンテナンスのURLを指定します。

メンテナンスのControllerとViewを設置

上記で指定したコントローラーとビューファイルをそれぞれ設置します。
今回は app/Plugin/Maintenance/Controller/MaintenanceController.php と app/Plugin/Maintenance/View/Maintenance/index.ctp となります。

レイアウトファイルもメンテナンス用にする場合は、app/Plugin/Maintenance/View/Layouts/default.ctp を置けばこちらのファイルを読み込んでくれます。

最後にメンテナンスモードをONにする

最後、メンテナンスモードにするために、app/config/bootstrap.php に設定を追加します。

ここを true / false にすることでメンテナンスモードを切り替えることができます。

メンテナンスモードをタイマー設定にする

上記のように’Maintenance.enable’で指定すると、その瞬間からメンテナンスモードになりますが、深夜1時からメンテナンスモードに自動で切り替えたいというケースもあるかと思います。
その場合は、上記の bootstrap.php への設定は行わず、代わりに app/tmp/maintenance というファイルを作成し、いつから開始との情報を記載することで自動で切り替わる仕組みにすることができます。

例えば 2014/1/1〜2014/1/3とする場合は、

2014/1/1〜ずっとの場合は、

2014/12/31までずっとの場合は、

ステータスコードもしっかり指定

以上の設定で全て完了で、実際にサイトにアクセスしてみると、上記の例の場合、/maintenance にリダイレクトされているのが確認できます。
その際はステータスコードの307を返し、一時的なリダイレクトであることをクローラーに対し伝えてくれます。

The following two tabs change content below.

柴田 篤志

愛知県一宮市在住のWEBシステム屋(SE・プログラマ)。PHP、 CakePHPを利用して日々開発中。CakePHPをこれから始める方、ある程度CakePHPで開発をしている初級〜中級者の方を対象に、CakePHPでの開発をスピードアップするための情報をまとめています。CakePHPの案件のご依頼、御見積はこちらへご連絡ください。

最新記事 by 柴田 篤志 (全て見る)

WordPressとCakePHPの共存

サイトを作るのに便利なWordPress。プラグインも数多く用意されて

サイトマップの作成方法

Googleのウェブマスターツールに渡すためのサイトマップの作成方法で

INSERTしたIDを取得する

データを保存した後にINSERTされたデータのIDを使って何かの処理を

ファイルの存在確認やフォルダー内のファイル一覧取得

特定のファイルの存在を確認したい場合や特定のフォルダー内にあるファイル

リンクの最後に常にスラッシュをつける方法

URLの最後に常にスラッシュをつけるかつけないかを統一する方法は、UR

countやsumを使う時のフィールド名を指定する

CakePHPでcountやsumなどを使う場合、ちょっとした工夫が必

Formの便利な使い方

問い合わせフォームや会員機能など、WEBサイトを作る際に必ず必要になる

ヘルパーをオーバーライドする

CakePHPで便利な機能が詰まったヘルパーですが、時々もう少しこうだ

特定の時だけSQLの条件を追加するならSet::mergeを使う

SQLの条件を追加したい時に使うのがarray_mergeなどですが、

ページネーションではDISTINCTではなく、GROUP BYを使う

重複したデータを省く時に使うDISTINCTですが、ページ送りで使う時

Model内で別のModelを呼び出す

モデル内で別のモデルを使いたいケースがあった場合、次のようにすることで

CakePHPでGoogleAnalyticsAPIを使う

CakePHPでGoogleAnalyticsを使う方法について見てい

独自のfindを定義するfindMethods

findをより便利に、よりスッキリ書くのに、findMethodsを使

TCPDFを使ってCakePHPでPDFを作成

CakePHPでPDFを作成するには幾つかの方法がありますが、今回はT

JavaScriptをコードの最下部に配置

SEOの観点からJavaScriptのコードは一番下に記述したいところ

無限スクロールをさせる

TwitterやFacebookのタイムラインを見ていて、ページの下に

PHPExcelの導入

ExcelにDBのデータを表示して一覧を作ったり、請求書などのフォーマ

Warning: SplFileInfo::openFile〜の警告が表示されたら

ShellとWEBの両方で同一のModelを呼び出す時に「Warnin

連結されていないデータを抽出

通常、テーブルを連結してデータを取得するには、アソシエーションを利用し

データを取得する

データを取得したい時に少し変わった条件で取得したい場合があります。

PAGE TOP ↑