• 25-01-2010, 23:09:20
    #1
    Merhabalar arkadaşlar

    Vbulletin forumda aşağıdaki kod ile son konuları çekerken cpu aşırı miktarda artıyor. Yardımcı olabilecek var mı

    $tavsiye2_limiti = $vbulletin->options['htw_tavsiye2_limiti'];
    $tavsiye2_sayisi= $vbulletin->options['htw_tavsiye2_sayisi'];
    $tavsiye2_forumu= $vbulletin->options['htw_tavsiye2_forumu'];
    if ($vbulletin->options['htw_tavsiye2_forumu']!='')
    	{
    		$fi .= ','.$vbulletin->options['htw_tavsiye2_forumu'];
    	}
    	$fi = substr($fi, 1);
    	if ($fi!='')
    	{
    		$xsir_ve = "thread.forumid IN($fi)";
    		$xsir_1 = "forum.forumid IN($fi)";
    	}
    $tavsiyeler2 = $db->query_read("
    				    SELECT t.threadid, t.title, t.lastpost, t.dateline AS threaddate, t.visible, p.dateline AS postdate, p.visible
                FROM " . TABLE_PREFIX . "thread AS t
                LEFT JOIN " . TABLE_PREFIX . "post AS p ON (t.lastpost = p.dateline)
                WHERE p.visible = '1' AND t.visible = '1'
                ORDER BY postdate DESC
                LIMIT 0,$tavsiye2_sayisi");
    while ($tavsiye2 = $db->fetch_array($tavsiyeler2))
    {
    $tavsiye2['title'] = strip_tags(stripslashes($tavsiye2['title']));
    if ($vbulletin->options['htw_tavsiye2_limit'] AND strlen($tavsiye2['title']) > $vbulletin->options['htw_tavsiye2_limit'])
    {
    $tavsiye2['title'] = substr($tavsiye2['title'], 0, strrpos(substr($tavsiye2['title'], 0, $vbulletin->options['htw_tavsiye2_limit']), ' '));
    $tavsiye2['title'] .= '...';
    }
    $tavsiye2bitno = $tavsiye2['threadid'];
    eval('$tavsiye2yazilim .= "' . fetch_template('htw_tavsiye2') . '";');
    }
    $db->free_result($tavsiye2);
    unset($tavsiye2);
  • 25-01-2010, 23:53:40
    #2
    Üyeliği durduruldu
    hocam joinler genel olarak kasici işlemlerdir.sql leri parcalayabiliyorsaniz parcalayip cekmenizi oneririm. birde ortalama veri adeti nedir bu sqllerde kullandiginiz tablolar icin
  • 25-01-2010, 23:56:29
    #3
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    hocam joinler genel olarak kasici işlemlerdir.sql leri parcalayabiliyorsaniz parcalayip cekmenizi oneririm. birde ortalama veri adeti nedir bu sqllerde kullandiginiz tablolar icin
    Hocam kodlama benim değil.Bir arkadaş kodlamış sorun çok fazla cpu yemesi kodu ücretli olarak hafif hale getirebilirim derseniz görüşelim.
  • 26-01-2010, 02:07:30
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Joinler çok fazla 50 tane join var

    Daha öncede bana böyle bir iş gelmişti sonradan vazgeçtiler.

    Explainlere çevirilmeli explain kullanılmalı Joinler sınırları zorlar.
  • 26-01-2010, 14:15:33
    #5
    Üyeliği durduruldu
    1 tane join var o da kasmaz . order by ve limit kasıyor bu sorguyu limit yerine subselect yazılırsa hızlanır. ayrıca order by yerine o sutuna DESC indexi atılmalı