如何在Zend Framework中处理数据库访问?

时间:2010-07-22 11:56:04

标签: php mysql zend-framework

开始:我不是Zend Framework的专家并且做了一些可怕的错误。我很确定。我认为我的设计模式有问题。

举个例子: 我正在使用Zend_ACL(访问控制列表)构建访问管理

数据库中有三个表: 角色 资源 权限

权限表处理角色 - 资源关系。

我为每个表创建了一个模型,它扩展了Zend_Db_Table_Abstract。到目前为止一切都很好。

现在在ACL中我加载了页面请求的资源,角色和权限,并将其添加到ACL中。 现在我正在做错的部分:我这样做的方式是从tablemodels中调用方法,它们为我提供了所需的数据。但是当我查看我的探查器时,它需要117个选择查询,并且只需加载ACL就需要0.7秒。尚未查询底层系统。这可能不是很好,我相信有更好的方法。我在谷歌或任何地方都找不到任何相关内容。

是否有人可以告诉我,如果我做错了什么,如果我做错了,我该怎么做才能加快速度呢?我应该将一个查询中的所有内容加载到模型中并让它们处理吗?我该怎么做,有什么例子吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

如果您确实需要来加载所有内容,为什么不加载它一次并序列化您的acl对象并将其保存在会话或缓存中?

每次需要访问ACL对象时,请检查是否设置了缓存或会话变量。如果已设置,则可以避免运行查询,只是从会话或缓存中反序列化对象。

我同意这是一个肮脏的解决方案,但它可以工作,并且每次都不会运行117个查询。