[cakephp]メンテナンスモード

「メンテナンス中は、メッセージを表示し、ログイン中のユーザーはログアウトにする。」という仕様で、メンテナンスモードプラグインを使って処理します。

Maintenance plugin for CakePHP

参考:メンテナンスモードを簡単実装できるMaintenance plugin | CakePHPクッキング

bootstrap.php

CakePlugin::load('Maintenance');
Configure::write('Maintenance.enable', false);

DBにフラグを持って、フラグがONならメンテ中にします。
AppController.php

public function beforeFilter() {
  // メンテナンスモード(フラグがONならメンテ中にする)
  if ($this->_config['Config']['maintenance']) {
    Configure::write('Maintenance.enable', true);
    $this->Maintenance = $this->Components->load('Maintenance.Maintenance',
      array(
        // メンテンス時に表示するアクション
        'maintenanceUrl' => array(
          'controller' => 'homes',
          'action' => 'index'
        ),
        // メンテンス時でも実行できるアクション
        'allowedAction' => array(
          'posts' => array('action1'),
          'users' => array('action1', 'action2')
        ),
        // メンテナンスにしないIP
        //'allowedIp' => array('127.0.0.1'),
      )
    );
    $this->Maintenance->initialize($this);

    // ログイン中のユーザーは強制ログアウト
    $this->Auth->logout();
    $this->Session->destroy();
  }
}

個々のControllerで

public function beforeFilter(){
  parent::beforeFilter();
}

Viewでもフラグを見て、メンテ中の表示をしています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)