如果会话存储引擎不可用,是否存在使用Laravel优雅地回退到无会话状态的中间件,包或一般方法?
也就是说,让我们说你有一个使用数据库会话引擎的系统。如果该数据库出现故障,Laravel会在无法连接数据库时抛出异常。我想要一种方法,让Laravel 不抛出异常,然后继续使用没有工作会话引擎。
(我意识到这将意味着在应用程序级别上仔细编码,永远不要假设会话可用,但感谢所有警告)
用例纠正:
会话存储系统暂时中断(维护窗口,意外中断等)。
登录用户点击页面,看到Laravel错误页面,因为会话引擎无法连接
网友很伤心
我宁愿用户看到一些类型的普通网页,而不是一般的错误消息,即使这意味着我们无法在网页上包含有状态会话数据
答案 0 :(得分:1)
这取决于,Laravel不会持久地要求会话引擎工作,只在实际使用它的页面上。所以这意味着后备基本上没有帮助 - 事实上,一个例外是Laravel实际上可以做的最好的事情来帮助你。
<强>为什么强>?因为异常可以是正确的,如果这是你想做的事情(尽管它几乎没有意义),可以忽略。
也许我理解你错了,你究竟想要回到什么地方?
答案 1 :(得分:0)
对我而言,我很难想象它是如何运作的以及你需要它。例如,当您需要用户登录以访问某个页面时,如果会话数据库或整个数据库已关闭,应该会发生什么?对我来说,唯一的解决方案是向用户显示出现错误的信息,因为如果不是,就很难假装网站正在运行。所以应用程序抛出异常,你抓住它并显示用户的错误页面(并发送站点管理员电子邮件或短信)
如果你试图假装你可能会让你的用户生气,因为他们会尝试登录而他们不会在没有任何信息的情况下登录,所以他们会尝试第二次,第三次,最后他们会认为你的网站坏了,永远不会再回来了。在我看来,最好告诉他们有什么不对劲,“嘿,大约2个小时后回来”