• 14-06-2010, 21:13:49
    #1
    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.
  • 14-06-2010, 21:21:04
    #2
    Üyeliği durduruldu
    http://php.net/manual/en/book.memcache.php
  • 14-06-2010, 22:05:56
    #3
    Eposta Aktivasyonu Gerekmekte
    Kategori isimlerini arraya atıp serialize edip metin dosyasında saklarsınız.Sonra o dosyayı okuyup unserialize edersiniz.
  • 14-06-2010, 22:22:11
    #4
    <?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:17
    #5
    Kimlik 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
    #6
    Üyeliği durduruldu
    ezSQL - 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