Merhaba, kategori alanına cache yapmamız mümkün müdür? (serialize ve unserialize ile nasıl yapabilirim ?)
Örnek vererek anlatırsanız sevinirim.
Kısmi cache ? Serialize-Unserialize
5
●485
- 14-06-2010, 21:13:49
- 14-06-2010, 21:21:04Üyeliği durduruldu
- 14-06-2010, 22:05:56Eposta Aktivasyonu GerekmekteKategori isimlerini arraya atıp serialize edip metin dosyasında saklarsınız.Sonra o dosyayı okuyup unserialize edersiniz.
- 14-06-2010, 22:22:11
<?php $sql = mysql_query("SELECT id,katadi,seo,alt FROM kategori ORDER BY seo ASC"); while($yaz = mysql_fetch_array($sql)) { $altsql = mysql_query("SELECT katadi,seo,alt FROM kategori WHERE alt='$yaz[id]' ORDER BY seo ASC"); while($altyaz = mysql_fetch_array($altsql)) { echo '<li class="alt"><a href="'.$ayar['siteadres'].'/'.$altyaz['seo'].'/">'.$altyaz['katadi']."</a></li>"; } echo '<li><a href="'.$ayar['siteadres'].'/'.$yaz['seo'].'/">'.$yaz['katadi']."</a></li>"; } ?>şimdi ben bunu öyle bir serialize yapmalıyım ki alt kategorileri ayrıştırabileyim.. - 15-06-2010, 03:18:17Kimlik doğrulama veya yönetimden onay bekliyor.Arkadaşım aynı şekilde yazacaksan sessiona atsana, serialize ile uğraşacağına:
<?php if(!$_SESSION['kategoriler'] || || (time() - $_SESSION['kategori_zamani'] > 600)){//sessionda kategoriler yoksa veya kontrol süresi 10 dakikayı geçmişse $sql = mysql_query("SELECT id,katadi,seo,alt FROM kategori ORDER BY seo ASC"); while($yaz = mysql_fetch_array($sql)) { $altsql = mysql_query("SELECT katadi,seo,alt FROM kategori WHERE alt='$yaz[id]' ORDER BY seo ASC"); while($altyaz = mysql_fetch_array($altsql)) { $kategoriler .= '<li class="alt"><a href="'.$ayar['siteadres'].'/'.$altyaz['seo'].'/">'.$altyaz['katadi']."</a></li>"; } $kategoriler .= '<li><a href="'.$ayar['siteadres'].'/'.$yaz['seo'].'/">'.$yaz['katadi']."</a></li>"; } $_SESSION['kategoriler'] = $kategoriler; $_SESSION['kategori_zamani'] = time(); } else{ $kategoriler = $_SESSION['kategoriler']; } echo $kategoriler; ?>Yok serialize istiyorsan da aynı mantıkla, serialize, unserialize yapabilirsin. Sadece $kategoriler .= yerine $kategoriler[$i] = "",$kategoriler[$i]['altkat']="" vb. şeklinde kullanırsın. - 15-06-2010, 04:15:53Üyeliği durdurulduezSQL - Mysql class ını kullanırsınız herşeyi otomatik yapar
)
//Bağlantı ve diğer ayarları yaptığınızı var sayıyorum $db->cache_timeout = 5; //1 * saat olarak değerlendirilir buradaki zaman 5 saat $db->cache_dir = 'sql_keyc_klasorun';/*sql keyc :) cache klasörünün ismi cache klasörün chmod ayarının 755 olması kafi*/ $db->use_disk_cache = true;//disk üzerine cache'i yaz $db->cache_queries = trule;//sorguları cache'e al $kategoriler=$db->mysql_results("select * from kategoriler order by id DESC "); foreach($kategorile as $cikti){ echo "falanca işlemler"; } //şayet cache almak istemediğin birimleri ise $db->use_disk_cache = false; $db->cache_queries = false; //sorgu ve işlemlerin şeklinde yaptığında buranın altını cache almaz ;) en sağlıklı sistemlerden biridir
)