【发布时间】:2010-06-21 01:17:12
【问题描述】:
我使用 Zend_Cache_Core 和 Zend_Cache_Backend_File 来缓存为访问数据库的模型类执行的查询结果。
基本上查询本身应该形成用于缓存获得结果的id,唯一的问题是它们太长了。 Zend_Cache_Backend_File 不抛出异常,PHP 不抱怨但缓存文件没有创建。
我想出了一个根本没有效率的解决方案,将任何已执行的查询连同一个自动递增的 id 存储在一个单独的文件中,如下所示:
0->>SELECT * FROM 表 1->>从表 1、表 2 中选择 * 2->>SELECT * FROM table WHERE foo = bar
你明白了;这样我每个查询都有一个唯一的 ID。每当插入、删除或更新完成时,我都会清除缓存。
现在我确定您在这里看到了潜在的瓶颈,对于任何测试,从缓存中保存或获取两个(或三个,我们需要添加新的 id)请求都会发送到文件系统。这甚至可能会破坏所有缓存的需要。那么有没有一种方法可以在 php 中生成一个唯一的 id,即更短的表示形式,而不必将它们存储在文件系统或数据库中?
【问题讨论】:
标签: php unique zend-cache