【问题标题】:Zend "destructor"?Zend“破坏者”?
【发布时间】:2023-03-20 22:51:01
【问题描述】:

我们使用 Zend 框架用于 MVC 和 Pear 来访问数据库。我想知道每次请求完成时是否应该关闭与数据库的连接?如果是这样,有没有办法优雅地做到这一点?

我们有大约 50 个动作分布在多个控制器上,我真的不想将 db->disconnect() 放在每个控制器的末尾。有没有一种方法可以让我将此断开连接命令放在一个位置,如果你愿意的话,可以放在一个“析构函数”中,并让 Zend 在请求完成时自动调用它?

【问题讨论】:

    标签: database zend-framework zend-db disconnect


    【解决方案1】:

    目前我能想到两种可能性,您可以考虑。

    首先,您可以将“析构函数”放在控制器 plugin 中,例如dispatchLoopShutdown 钩子。

    其次,如果你真的想在你请求的最后执行一些东西,你可以在你的 index.php 中把你的“析构函数”放在$application->bootstrap()->run(); 之后。

    【讨论】:

    • 我建议谨慎使用它。根据在应用程序上花费的平均用户时间(请求数)和您网站上的用户数做出选择。根据服务或控制器中的数量和使用情况以及非持久连接的使用情况下注。
    【解决方案2】:

    只有 100% 防弹解决方案使用register_shutdown_function()。即使请求被重定向($this->_helper->redirector->gotoUrlAndExit())或脚本被杀死(使用die()exit()),它也会被调用。两者 - 插件和索引的最后一行都可能在重定向或终止脚本时失败。

    【讨论】:

      猜你喜欢
      • 2015-12-22
      • 2012-04-07
      • 2017-06-13
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 2011-05-24
      • 2018-07-14
      相关资源
      最近更新 更多