Joomla makale içinde bir SQL SELECT sorgusu makul rastgele sonuçlar gerektir (Cache etkin)

1 Cevap php

Kurulum: LAMP yığını üzerinde Joomla web sitesi

Ben aşağıda yapıştırılan gibi bu, Joomla makale basit bir SELECT tarafından sorgulanan, bazı kayıtları içeren bir MySQL tablo var. Bu özel Joomla web sitesi Önbellekleme Joomla Genel Yapılandırmada üzerine döndü. Ben resultset, sayfa yüklendiğinde her zaman görüntülemek sırasını rastgele gerekir.

Regular php/mysql would offer me two approaches for this: 1. use 'order by RAND()' or any of a number of methods to allow a SELECT query to return reasonably random results. 2. once php gets the result from the SELECT into an array, shuffle the array to get a reasonably random order of array items.

Ancak, bu Joomla örnek olarak önbelleğe yukarıdaki yaklaşımların ya başarısız, kendi Genel Yapılandırmada AÇIK döndü. Sayfa önbellekten teslim gibi ben sipariş randomize bir sayfayı yüklemek ilk kez, ancak başka reloads, sipariş değiştirmek için neden yok. Anlık Önbellek devre dışı, her iki yaklaşım (shuffle / sipariş rand tarafından) mükemmel çalışır. Ne eksik? Nasıl bu özel yazı için Küresel Cache geçersiz mi? Çok basit bir gereklilik, bu, gayet iyi PHP ve MySQL ikisi tarafından karşılanmaktadır ben kapatmak olamaz Joomla Cache tarafından engellendi.

Veritabanından sonuçlar verir 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";
}

1 Cevap

Ben bir bileşen ya da ne yaratıyor sanırım?

Sen her istekten sonra önbellek (belki şartlı) sizin bileşeni temizlemek için düşünebilirsiniz:

$cache =& JFactory::getCache('your-component-name');
$cache->clean();