"Bakım altında" Zend Framework

6 Cevap php

Ben veritabanı veya bir şey yükseltme am zaman için Zend Framework bir tutma / "altında bakım" sayfası kurmak ve siteyi kullanarak kimseyi istemiyorum nasıl anlamaya çalışıyorum. Ben statik bir HTML sayfası ve tüm trafiği bu yönlendirildi var istiyorum.

Ben doğrusu. Htaccess kullanmak istiyorum ve önyükleme dosyası üzerinden yapmak istiyorum.

Herhangi bir fikir?

Teşekkürler.

6 Cevap

Ben index.php tercih (ZF göbeğini olan) index.html göstermek için Apache kurdum. Sürece / index.php doğrudan bağlantı yok gibi bir yerde, o zaman sadece bir index.html dosyasına bırakın, ve ZF siteye tercih olduğunu gösterecektir.

. Alternatif sizin konfigürasyonunda bir giriş var ini dosyası olduğunu ve en kısa sürede yapılandırma okudum:

if ($config->maintenance) {
    readfile(APPLICATION . '/../public/maintenance.html');
    exit;
}

Sen herkes bloke olsa bile bile alabilirsiniz böylece, hem de belirli bir IP adresi (kendi) için orada başka bir çek eklemek isteyebilirsiniz.

Ben talebinin geçerliliği bir sayfa istendiğinde her zaman kontrol bir eklenti oluşturarak yaptık.

Içinde eklentinin yürütülmesi sırasında "preDispatch ()" Eğer bakım altında / mevcut durum olarak aktif tutun ve orijinal hedefe isteği akmasına izin ya da bir açılış sayfasına yönlendirin olacak yapılandırma bir değişkeni analiz Bu amaçla.

Kod örneği

public function preDispatch(Zend_Controller_Request_Abstract $request)
{
    // get your user and your config
    if( $config->suspended && $user->role()->name != "admin"){
        $request
            ->setModuleName( 'default' )
            ->setControllerName( 'index' )
            ->setActionName( 'suspended' )
            ->setDispatched(true)
        ;
    }
}

Bir maintenance_mode anahtarı için konfigürasyon dosyasını kontrol ve statik html bakım sayfasına bootstrap içinde her isteği yönlendirme olabilir.

Bunu yapmak için nasıl gösteren bir blog yazısı var. Setting up a maintenance page with Zend Framework

I dispatchLoopShutdown() ile eklentisi kullanmak istiyorsunuz ve yapılandırma ayarlarına göre ben istediğiniz herhangi bir kontrolöre isteği yönlendirme olur.

Ben Zend 1.12 üzerinde bir TEE bu önerilerin hepsi izledi. Etrafta Google'da. Zend_Loader_PluginLoader kullanarak) (application.ini kullanarak eklenti yolunu ayarlama, zend_loader_autoloader_resource kullanarak çalıştı. Bunların hiçbiri benim için çalıştı. . Ben bir htaccess yazma sona erdi:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/maintenance\.php$
RewriteRule ^(.*)$ /maintenance.php [R=503,L]

Zend kötü çerçeve budur. Basit bir şey yapmak için ne kadar farklı seçenekler ton, Resmi Belgeler, son derece muğlak ve belirsiz olduğunu ve kimsenin tam olarak anlamadığı ya da ben doğru şeyler yapmaya çalışıyorum benim zaman bir saat israf sonuna kadar böylece bir şey yapmak için doğru yolu açıklayabilir.