我正在为现有的数据库结构开发一个大型的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",似乎有时会清除索引.我希望这两个中的一个能够工作,但由于某些原因它不会每次都这样做.更像是5次中的1次.
清除这个的任何建议?
Class :: DBI wiki上的" 常见问题 "页面有关于此主题的部分.最简单的解决方案是完全禁用活动对象索引:
$Class::DBI::Weaken_Is_Available = 0;