Есть ли простой способ перевести приложение в режим «Только для чтения»?

Мне нужно перезагрузить производственный веб-сервер и ограничить обновления на время запланированного простоя. В это время пользователи все еще могли просматривать данные.

Есть ли простой способ сказать Cake, чтобы он заблокировал страницы обновлений?

Я думал, что могу добавить глобальную переменную в файл конфигурации, которую проверяют все страницы обновления. Если он установлен, они отключают страницу.

Возможно, это можно было бы сделать в контроллерах. Если вы переходите на страницу добавления/редактирования/удаления, установите флэш-сообщение и перенаправьте на index.

Я использую MySQL, поэтому я могу поместить его в режим только для чтения, но тогда пользователи получат ошибки.


person DuaneW    schedule 30.05.2014    source источник
comment
Это действительно уникально для вашего кода. Это означает, что если вы хотите предотвратить обновления, вам нужно запрограммировать метод «Только для чтения» в вашем приложении.   -  person Giacomo1968    schedule 30.05.2014
comment
Есть способ, которым вы можете переключить режим только для чтения в вашей базе данных, если вы используете MySQL, вы захотите обсудить это с вашим администратором базы данных. См. stackoverflow.com/questions/18401120/   -  person Filype    schedule 30.05.2014
comment
закрыто на техническое обслуживание вернитесь через час кажется проще   -  person    schedule 30.05.2014
comment
Я думаю, что обновлю контроллеры, чтобы добавление/редактирование/удаление перенаправлялись обратно в индекс и отображалось флэш-сообщение.   -  person DuaneW    schedule 30.05.2014


Ответы (1)


Для Cakephp 1.3

core.php

<?php
...
// Offline mode
Configure::write( 'SiteSettings.site_status', 'Online' );
Configure::write( 'SiteSettings.site_offline_url', '/offline' );
...
?>

app_controller.php

<?php
...
function beforeFilter()
{
    ...
    // Offline mode
    if( ( Configure::read( 'SiteSettings.site_status' ) == 'Offline' ) and ( $this->here != Configure::read( 'SiteSettings.site_offline_url' ) ) )
    {
        $this->redirect( Configure::read( 'SiteSettings.site_offline_url' ) );
    }
    ...
}
...
?>

просмотров/страниц/offline.php

<div>Whatever HTML you want for "offline mode"</div>
person mike    schedule 30.05.2014
comment
Да, именно это я и имел в виду, но я бы перенаправил на индекс, чтобы они все еще могли просматривать данные. - person DuaneW; 02.06.2014