Zend Framework "на обслуживании" страница - PullRequest
2 голосов
/ 15 июня 2009

Я пытаюсь выяснить, как настроить страницу хранения / "в обслуживании" в Zend Framework, когда я обновляю базу данных или что-то еще и не хочу, чтобы кто-либо использовал сайт. Я хотел бы иметь статическую HTML-страницу и перенаправлять весь трафик на нее.

Я бы предпочел не использовать .htaccess и хотел бы сделать это через файл начальной загрузки.

Есть идеи?

Спасибо.

Ответы [ 6 ]

2 голосов
/ 15 июня 2009

Я установил Apache для показа index.html вместо предпочтения index.php (который загружает ZF). Пока вы нигде не ссылаетесь непосредственно на /index.php, вы можете просто вставить файл index.html, и это будет видно по предпочтению сайта ZF.

Альтернативой может быть запись в файле конфигурации .ini, и как только вы прочитаете конфигурацию:

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

Возможно, вы захотите добавить еще одну регистрацию для определенного IP-адреса (вашего), чтобы вы могли получить его, даже когда все остальные заблокированы.

2 голосов
/ 15 июня 2009

Я сделал это, создав плагин, который проверяет правильность запроса каждый раз, когда запрашивается страница.

Во время выполнения плагина в «preDispatch ()» вы можете проанализировать переменную из конфига, чтобы она сохраняла ваш текущий статус как активный / находящийся в процессе обслуживания, и позволять потоку запросов исходному месту назначения или перенаправлять его на целевая страница для этой цели.

Пример кода

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)
        ;
    }
}
1 голос
/ 20 апреля 2010

У меня есть запись в блоге, которая демонстрирует, как это сделать. Настройка страницы обслуживания с Zend Framework

1 голос
/ 15 июня 2009

Вы можете проверить файл конфигурации на наличие ключа maintenance_mode и перенаправить каждый запрос из начальной загрузки на страницу поддержки статического html.

0 голосов
/ 13 марта 2013

Я последовал всем этим предложениям в TEE на Zend 1.12. Я погуглил вокруг. Попробовал с помощью application.ini, установив путь к плагину, используя zend_loader_autoloader_resource (), используя Zend_Loader_PluginLoader. Ничто из этого не сработало для меня. В итоге я написал .htaccess:

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

Вот почему Zend - худший фреймворк. Множество различных вариантов того, как сделать что-то простое, Официальная документация чрезвычайно двусмысленна и неясна, и никто не может полностью понять или объяснить, как правильно сделать что-либо, поэтому я трачу час своего времени на попытки сделать все правильно. *

0 голосов
/ 15 июня 2009

Я бы использовал плагин с dispatchLoopShutdown() и, основываясь на настройках конфигурации, я перенаправил бы запрос на любой контроллер, который вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...