设置:LAMP堆栈上的Joomla网站
我有一个包含一些记录的MySQL表,这些记录是通过Joomla文章上的简单SELECT查询的,如下面粘贴的那样。这个特定的Joomla网站在Joomla的全局配置中启用了缓存。我需要随机化每次加载页面时显示结果集的顺序。
常规php / mysql会为我提供两种方法: 1.使用'按RAND()的顺序或任何一种方法允许SELECT查询返回合理随机的结果。 2.一旦php将SELECT中的结果导入数组,就可以对数组进行混洗,以获得合理随机的数组项顺序。
但是,由于此Joomla实例在其全局配置中启用了缓存,因此上述任一方法都会失败。第一次加载页面时,订单是随机的,但是任何进一步的重新加载都不会导致订单更改,因为页面是从缓存传递的。缓存被禁用的瞬间,两种方法(由rand进行shuffle / order)完美地工作。我错过了什么?如何覆盖此特定文章的全局缓存?一个非常简单的要求,即php和mysql都能很好地满足,被Joomla Cache阻止,我无法关闭。
返回数据库结果的php。
<pre>
$db = JFactory::getDBO();
$select = "SELECT id FROM jos_mytable;"; //order by RAND()
$db->setQuery($select);
echo $db->getQuery(); //Show me the Query!
$rows = $db->loadObjectList();
//shuffle($rows);
foreach($rows as $row) {
echo "$row->id";
}
答案 0 :(得分:0)
我猜你是在创建一个组件还是什么?
您可以考虑在每次请求后从缓存中清理您的组件(可能是有条件的):
$cache =& JFactory::getCache('your-component-name');
$cache->clean();