Aspire
Koineks
  • 15-12-2009, 01:12:54
    #1
    1/2
    Merhabalar, konuyu daha önce dillendirmiştim, saolsun devturkeli aşağıdaki mesajı gönderdi.
    devturkeli adlı üyeden alıntı
    şurada 5-6 yöntem verilmiş dediğim şekilde, incelemenizi öneririm.
    http://www.gorilla3d.com/v8/fast-ran...-in-mysql.html
    Bu mesaja istinaden rastgele veriyi çekmek için zayıf php bilgim ile aşağıdaki kodu kullandım.

    <?php
    $wpdb->rastgeleresim = 'wp_rastgeleresim';
    function rastgele_resim($yazi_sayisi="1") {
        global $wpdb;	
        $sorgu = "SELECT resim FROM $wpdb->rastgeleresim WHERE id = ROUND(".lcg_value()." * (SELECT COUNT(*) FROM $wpdb->rastgeleresim)) LIMIT 1";
        $sonuclar = $wpdb->get_results($sorgu);
        foreach ($sonuclar as $sonuc) {
          $cikti = $sonuc->resim;
        }
        echo $cikti;
    }
    ?>
    Bu şekilde cpu yu az yoracağım benimde aklıma yattı fakat gene randıman alamadım, bu sorguda çok yoruyor, 120 satır veri var ve en fazla 30 karakterler.(Resim urlleri)
    Aklıma şu geldi:
    120 resim var. Rastgele göstermesin sıra ile göstersin, ilk açana 1. resim, sonra 2. sonra 3. sonra 4. diye 120. satırda başa dönsün, yada zamana göre versin veriyi 2 saat 120 dakikadır mantığı ile? Bunlar mümkün müdür, yoksa saçma mıdır? Bu daha mı az kaynak tüketir? Başka bir fikri olan var mı?
  • Sponsor Reklam
  • 15-12-2009, 08:38:05
    #2
    1/2
    random kullaniyorsaniz randiman almak her türlü zor. ama bu kodun bu konuda en optimize olduğunu düşünüyorum. bence sisteminizi yoran başka şeyler var. sadece bu kısmı iptal edince sistem rahatliyor mu? birinci soru bu. ikinciside bu fonksiyonu kaç kere cagiriyorsunuz?
  • 15-12-2009, 08:52:35
    #3
    1/2
    sdemirkeser adlı üyeden alıntı
    random kullaniyorsaniz randiman almak her türlü zor. ama bu kodun bu konuda en optimize olduğunu düşünüyorum. bence sisteminizi yoran başka şeyler var. sadece bu kısmı iptal edince sistem rahatliyor mu? birinci soru bu. ikinciside bu fonksiyonu kaç kere cagiriyorsunuz?
    Tek olarak kullanınca 0.2 saniyede açıyor bu kodu, bana uzun geldi İlgine teşekkürler sdemirkeser, bu php bölümünde sen ve devturkeli olmasa napcam bilmiyorum. İdare etsin ziyaretçiler, beklesinler az daha napim
  • 15-12-2009, 08:59:59
    #4
    1/2
    Bu arada bazı php dosyalarını ANS olarak kaydedince daha hızlı çalıştığını gözlemledim, mantığı ne bilmiyorum ama doğrulamak için 5 kez denedim, sanırsam şansa denk geldi beşi de
  • 15-12-2009, 09:14:13
    #5
    1/2
    EmreUnan adlı üyeden alıntı
    Tek olarak kullanınca 0.2 saniyede açıyor bu kodu, bana uzun geldi
    hocam bir çözüm zaten count ile başka yerde toplam veri sayisini aliyorsaniz onuda parametre olarak gönderin. eğer ki yoksa tekrar hesaplasin

    yani fonksiyonunuz şuna benzer hale getirilebilir;


    PHP- Kodu:
    function rastgele_resim($toplam 0) {
        global 
    $wpdb;    
    if(
    $toplam != 0){
        
    $sorgu "SELECT resim FROM $wpdb->rastgeleresim WHERE id = ROUND(".lcg_value()." * (SELECT COUNT(*) FROM $wpdb->rastgeleresim)) LIMIT 1";
    }else{
        
    $sorgu "SELECT resim FROM $wpdb->rastgeleresim WHERE id = ROUND(".lcg_value()." * $toplam) LIMIT 1";
    }
        
    $sonuclar $wpdb->get_results($sorgu);
        foreach (
    $sonuclar as $sonuc) {
          
    $cikti $sonuc->resim;
        }
        echo 
    $cikti;

    zaten toplami hesapliyorsaniz bir nebzede olsa sistemi hizlandirir