【问题标题】:Is there an easy way to put application into a “Read Only” mode? [closed]有没有一种简单的方法可以将应用程序置于“只读”模式? [关闭]
【发布时间】:2014-05-30 02:42:28
【问题描述】:

我需要重新启动生产网络服务器,并希望在计划的中断期间限制更新。在此期间,用户仍然可以查看数据。

有没有简单的方法让 Cake 锁定更新页面?

我原以为我可以在配置文件中添加一个全局变量,所有更新页面都会检查它。如果已设置,它们会禁用该页面。

也许可以在控制器中完成。如果您转到添加/编辑/删除页面,请设置一条 Flash 消息并重定向到索引。

我正在使用 MySQL,所以我可以将它设置为只读,但用户会收到错误。

【问题讨论】:

  • 这对你的代码来说真的很特殊。这意味着如果你想阻止更新,你需要在你的应用程序中编写一个“只读”方法。
  • 有一种方法可以在您的数据库上切换只读模式,如果您使用的是 MySQL,您需要与您的数据库管理员讨论这个问题。见stackoverflow.com/questions/18401120/…
  • “关闭维护一小时后回来”似乎更简单
  • 我想我会更新控制器,以便将添加/编辑/删除重定向回索引并显示一条闪存消息。

标签: php cakephp cakephp-2.4


【解决方案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' ) );
    }
    ...
}
...
?>

views/pages/offline.php

<div>Whatever HTML you want for "offline mode"</div>

【讨论】:

  • 是的,这就是我的想法,但我会重定向到索引,以便他们仍然可以查看数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
相关资源
最近更新 更多