Laravel:如果会话数据库不可用,则会优雅地回退

时间:2014-09-25 17:03:51

标签: database session laravel

如果会话存储引擎不可用,是否存在使用Laravel优雅地回退到无会话状态的中间件,包或一般方法?

也就是说,让我们说你有一个使用数据库会话引擎的系统。如果该数据库出现故障,Laravel会在无法连接数据库时抛出异常。我想要一种方法,让Laravel 抛出异常,然后继续使用没有工作会话引擎。

(我意识到这将意味着在应用程序级别上仔细编码,永远不要假设会话可用,但感谢所有警告)

用例纠正:

  • 会话存储系统暂时中断(维护窗口,意外中断等)。

  • 登录用户点击页面,看到Laravel错误页面,因为会话引擎无法连接

  • 网友很伤心

我宁愿用户看到一些类型的普通网页,而不是一般的错误消息,即使这意味着我们无法在网页上包含有状态会话数据

2 个答案:

答案 0 :(得分:1)

这取决于,Laravel不会持久地要求会话引擎工作,只在实际使用它的页面上。所以这意味着后备基本上没有帮助 - 事实上,一个例外是Laravel实际上可以做的最好的事情来帮助你。

<强>为什么?因为异常可以是正确的,如果这是你想做的事情(尽管它几乎没有意义),可以忽略。

也许我理解你错了,你究竟想要回到什么地方?

答案 1 :(得分:0)

对我而言,我很难想象它是如何运作的以及你需要它。例如,当您需要用户登录以访问某个页面时,如果会话数据库或整个数据库已关闭,应该会发生什么?对我来说,唯一的解决方案是向用户显示出现错误的信息,因为如果不是,就很难假装网站正在运行。所以应用程序抛出异常,你抓住它并显示用户的错误页面(并发送站点管理员电子邮件或短信)

如果你试图假装你可能会让你的用户生气,因为他们会尝试登录而他们不会在没有任何信息的情况下登录,所以他们会尝试第二次,第三次,最后他们会认为你的网站坏了,永远不会再回来了。在我看来,最好告诉他们有什么不对劲,“嘿,大约2个小时后回来”