【发布时间】:2016-12-18 06:19:06
【问题描述】:
是否可以在每次打开与数据库的新连接时执行查询。此查询需要在打开数据库连接后立即运行,因为此查询调用存储过程,该存储过程使用请求运行查询的用户的详细信息对表设置各种访问控制。我试图在各个地方调用这个存储过程,它们都成功了,但我想要一些反馈。
我已将此查询放在其他映射器扩展的抽象映射器类中。每次实例化新的映射器时都会调用存储过程。
另一个调用存储过程的地方是在调用其他映射器方法之前。这样做的缺点是会有很多重复的代码(调用存储过程的代码)。
这个调用的最后一个地方是Bootstrap.php。此文件中的每个 _init 方法假定每次加载应用程序时只运行一次。我决定将此调用放在我们的一个模块的 Bootstrap.php 之一中的存储过程中。这是迄今为止我能想到的最好的地方,因为我只需要编写一次调用存储过程的代码,并且每次访问应用程序时都会运行初始化方法。这样做的缺点是我不知道将东西放入 Bootstrap.php 的副作用。
所有这些地方的主要缺点之一是存储过程被多次调用。为了使访问控制起作用,存储过程只需要在每个数据库会话中调用一次。这不会因为不必要的调用而导致速度以外的任何问题。
有没有更好的地方可以把这个调用放到存储过程中? Zend FM 是否在某处实现了此功能?如果我把它放在 Bootstrap 文件中,有什么需要考虑的吗?
感谢您阅读本文并提供任何帮助。
- DB2 版本 10.5
- Linux 平台
- Zend FM 版本 2
【问题讨论】:
-
请指定 DB2 版本和平台。
标签: php zend-framework2 db2 db2-luw