• 28-03-2014, 15:56:08
    #1
    Merhaba,
    Hali hazırda çalışan bir arama yaparken otomatik tamamlama özelliği kullanıyorum.

    Kodlar şu şekilde;

    <?php 
    
    $q = strtolower($_GET["q"]);
    
    $sorgu = mysql_query("select * from veri where ad like '".$q."%'  limit 20");
    while ($yaz= mysql_fetch_array($sorgu)){
    
    $adi = $yaz["adi"];
    $id = $yaz["id"];
    
    echo "<span style='display:none'>-x-".$yaz["id"]."-x-</span>&nbsp;";
    echo $yaz["adi"]."<br>\n";
    
    }?>
    (Veritabanı bağlantısı vb. gereksiz kodları burada yayınlarken temizledim.)


    Bu özelliğe daha hızlı çalışması için memcache ekleyeceğim ancak kafama takılan bir şey var. Memcache ile tüm veritabanını tek bir key içerisinde tutup bunun içerisinde her bir harf basıldığında yeniden arama mı yapmalıyım? Yoksa her bir girilen tuş için örneğin "a" yeni bir memcache key oluşturup içerisinde a harfi geçen kayıtlarımı burada mı cachlemeliyim?

    Umarım yeterince açık anlatabilmişimdir, yardım ve fikirleriniz için şimdiden teşekkürler.
  • 28-03-2014, 16:00:58
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @Muzo; buna en iyi sen karar verebilirsin. İkisi içinde benchmark yapıp hangisi hızlıysa onu kullanman daha yararlı olur.
  • 28-03-2014, 16:04:31
    #3
    saintx adlı üyeden alıntı: mesajı görüntüle
    @Muzo; buna en iyi sen karar verebilirsin. İkisi içinde benchmark yapıp hangisi hızlıysa onu kullanman daha yararlı olur.
    Daha önce böyle bir iş için memcache kullanmadığımdan sorma gereği duydum, her bir harf ve kombinasyon için cache oluşturmak kısa süre içerisinde binlerce key olacağı anlamına geliyor, ne kadar mantıklı ve kullanışlı olur acaba?

    Bir de hazır yeri gelmişken sorayım mysql'de kullandığımız like komutuna benzer memcache için bir komut var mı acaba?
  • 28-03-2014, 16:04:49
    #4
    tablo çok büyük değilse bu iş için bir heap tablo oluşturabilirsiniz
  • 28-03-2014, 16:07:10
    #5
    @Muzo; memcache mantığına ters ama tüm anahtarları çekip bi' dizi atarak orada arama yapılabilir ama bu saçma olur. Aranan öğeye göre önbellekleme yapılırsa "bence" mantılı olur.
  • 28-03-2014, 16:11:49
    #6
    saintx adlı üyeden alıntı: mesajı görüntüle
    @Muzo; memcache mantığına ters ama tüm anahtarları çekip bi' dizi atarak orada arama yapılabilir ama bu saçma olur. Aranan öğeye göre önbellekleme yapılırsa "bence" mantılı olur.
    O halde aranan öğeye göre yapmaya başlıyorum, teşekkür ederim.
    Performans açısından nasıl bir sonuç çıkacağını işimi görüp görmediğini burada belirtirim.