我目前正在为现有的数据库结构进行Class :: DBI的大型实现,并且遇到了从Class :: DBI清除缓存的问题。这是一个mod_perl实现,因此类的实例在两次访问之间可能很旧。
从手册页中,我发现了两个选择:

Music::DBI->clear_object_index();


和:

Music::Artist->purge_object_index_every(2000);


现在,当我将clear_object_index()添加到DESTROY方法时,它似乎正在运行,但实际上并没有清空缓存。我能够手动更改数据库,重新运行请求,但它仍然是旧版本。
purge_object_index_every表示每n个请求清除一次索引。将此设置为“ 1”或“ 0”似乎会清除索引……有时。我希望这两个中的一个能够工作,但是由于某种原因,它并非每次都能做到。大约五分之一。

有什么建议可以解决吗?

最佳答案

common problems上的“ Class::DBI wiki”页面对此主题有一个section。最简单的解决方案是完全使用以下方法禁用活动对象索引:

$Class::DBI::Weaken_Is_Available = 0;

关于perl - 如何清除Class::DBI的内部缓存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35480/

10-13 06:11