• 16-09-2012, 20:12:37
    #1
    arakdaşlar bildiğiniz gibi bir text kutusuna her tuşa basma işlemini veri tabanında arama sonucu döndürüyoruz jquery autocomplete eklentisini kullanıyorum ama bu beni bu işleri yapmaktan alıkoymuyor bu konuda ciddi anlamda performans sağlayacak bir yöntem bileniniz varmı sürekli her tuşa basışta arama olayı tetiklenirse veri tabanı patlar.
  • 16-09-2012, 22:53:47
    #2
    Üyeliği durduruldu
    Belirli kriterler koymalisin ornegin ilk 3 harf yazilmadan sorgu baslamamali gibi.. kolay gelsin
  • 16-09-2012, 23:02:05
    #3
    Bende jquery'le onkeyup'la kelime girildimi sonuçları çıkarıyorum da şimdi bu yöntem veritabanını şişirdiğini nasıl tespit ettiniz anlayamadım.
  • 16-09-2012, 23:11:07
    #4
    o zaman size kodları yoluyorum.

    $("input[name=yazaradi]").keyup(function(){
    var sonuc=new Array();
    var out=new Array();
    if ($(this).val().length>2)
    {
    $.ajax({
    type:"POST",
    url:"yazarcek.php",
    data:"deger="+$(this).val(),
    dataType: "json",
    success:function(id){
    $.each(id,function(key,valuec){
    sonuc.push(key,valuec);
    out[valuec]=key;
    });

    $("input[name=yazaradi]").autocomplete({
    autoFocus:true,
    delay:1000,
    select:function(){
    $("input[name=yazaradi]").attr("disabled","disabled");
    $(".yazarcik").show();
    $("input[name=yazarid]").val("");
    },
    close:function(){
    //alert(out[$("input[name=yazaradi]").val()]);
    $("input[name=yazarid]").val(out[$(this).val()]);
    },
    source:sonuc
    });
    }
    });
    }
    });

    burada sistemi hızlandıracak ne gibi yöntemler kullanabilirim ?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 20:11:07 -->-> Daha önceki mesaj 20:02:11 --

    astald adlı üyeden alıntı: mesajı görüntüle
    Bende jquery'le onkeyup'la kelime girildimi sonuçları çıkarıyorum da şimdi bu yöntem veritabanını şişirdiğini nasıl tespit ettiniz anlayamadım.

    çok basit her tuşa bastığınızda veritabanına bir sorgu atılıyor 5 karakterli bir aramada işlem bitince 5 sorgu atıyor bunu bir sorguaya düşürmem lazım. ayrıca like ile arama işlemleri veritabanında en zor işlemlerdir id ile aramaya oranla 5 kata kadar sistemi kasar.
  • 17-09-2012, 00:54:54
    #5
    Cache sistemi oluşturun verileri json olarak kayıt edin ve cache yenileme süresini uzun tutun 24 saat gibi.
  • 17-09-2012, 01:44:59
    #6
    Üyeliği durduruldu
    Aşağıda uygulamalı örnek yazdım

    session_start();
    $gelen_yazi = $_POST["gelen_yazi"];
    $sonuclar = array();
    if (strlen($gelen_yazi) == 1){ // Eğer gelen yazı 1 karakter ise
    $sql = mysql_query();
    // Mysql sorgunu çalıştır
    while ($a = mysql_fetch_array($sql)){
    // Gelen verileri array a akttar;
    $sonuclar [] = $mysql_den_gelen_kayit;
    echo "Textfied yazıları";
    }
    // Döngüden çıktıktan sonra oluşturulan array ı session a at
    $_SESSION['veriler'] = $sonuclar;
    } else {
    if (strlen($gelen_yazi) % 2){ // Gelen yazı karakteri 1 den çok ise sayının bölünebilirliğini kontrol et örneğin ben 2 ye bölünüyorsa işlem yap dedim
    
    ###################################################
    // Yukardaki aynı işlemleri tekrarla verileri arraya aktarıp session a ata;
    ###################################################
    } else {
    $veriler = $_SESSION['veriler'];	
    foreach ($veriler as $v){
    echo $v;	
    }
    }
    }
  • 17-09-2012, 19:08:50
    #7
    bjkasim adlı üyeden alıntı: mesajı görüntüle
    o zaman size kodları yoluyorum.

    $("input[name=yazaradi]").keyup(function(){
    var sonuc=new Array();
    var out=new Array();
    if ($(this).val().length>2)
    {
    $.ajax({
    type:"POST",
    url:"yazarcek.php",
    data:"deger="+$(this).val(),
    dataType: "json",
    success:function(id){
    $.each(id,function(key,valuec){
    sonuc.push(key,valuec);
    out[valuec]=key;
    });

    $("input[name=yazaradi]").autocomplete({
    autoFocus:true,
    delay:1000,
    select:function(){
    $("input[name=yazaradi]").attr("disabled","disabled");
    $(".yazarcik").show();
    $("input[name=yazarid]").val("");
    },
    close:function(){
    //alert(out[$("input[name=yazaradi]").val()]);
    $("input[name=yazarid]").val(out[$(this).val()]);
    },
    source:sonuc
    });
    }
    });
    }
    });

    burada sistemi hızlandıracak ne gibi yöntemler kullanabilirim ?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 20:11:07 -->-> Daha önceki mesaj 20:02:11 --




    çok basit her tuşa bastığınızda veritabanına bir sorgu atılıyor 5 karakterli bir aramada işlem bitince 5 sorgu atıyor bunu bir sorguaya düşürmem lazım. ayrıca like ile arama işlemleri veritabanında en zor işlemlerdir id ile aramaya oranla 5 kata kadar sistemi kasar.

    javascript kısmı için timeout kontrolü ekleyebilirsin.

    http://www.w3schools.com/jsref/met_win_cleartimeout.asp

    if ($(this).val().length>2)

    direk sorguyu göndermek yerine misal 1 sn sonra arama yaptırabilirsin.

    ziyaretçi arama metnini yazarken timeout silinir, yazması bittikten 1 sn sonra ajax ile isteği gönderirsin

    .
    .
    clearTimeout(t);

    if ($(this).val().length>2) {
    t=setTimeout(function(){timedCount()},1000);
    }

    --------------------------------

    veritabanı açısından

    mysql memory table kullanabilirsin daha hızlı olucaktır.
    cron ile verileri memory tablosuna aktarırsın düzenli, ordan da arama yaptırabilirsin.

    file cache pek uygun değil bence bu uygulama için...
  • 17-09-2012, 22:45:42
    #8
    CoreDeluxe arkadaşım biraz daha detay verebilirsen çok memnun olurum bu cache işlemlerinde çok zayıfım bende
  • 17-09-2012, 22:49:58
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Tüm verileri çekip bir .json'da saklayın. Oradan arama yaparak daha hızlı ve performanslı arama yaparsınız.