vBulletin Query Optimasyonu

Ayyas  »  Bloglar  »  Gnik Drazil  »  vBulletin Query Optimasyonu

vBulletin , vBSEO , PHP , CSS ve Fenerbahçe üzerine tuttuğum kişisel bloğum.

vBulletin Query Optimasyonu

Posted 16-07-2007 at 02:48 by Lizard King
Updated 06-09-2007 at 11:15 by Lizard King
Bu başlık altında vBulletin içerisinde bulunan ve yok ederek kurtulabileceğiniz her türlü query'i yazıcam.

vBulletin içerisinde gelen Announcements yani Duyuru sistemini global olarak deaktif edemiyorsunuz. Birçok site bu sistemi kullansada ben açıkçası duyuru sistemini fazlasıyla gereksiz bulmaktayım. Çok değişik sistemde takip ettim ve duyuruların okunmadığını gördüm. Kullanmadığımız bir sistemin boş yere query kullanmasına gerek olmadığından dolayı bu ekstra query den kurtulmak için forumdisplay.php'yi açıyoruz ve aşağıdaki kodu silip kaydedip tekrar serverımıza upload ediyoruz.

Code:
	// get announcements

	$announcebits = '';
	if ($show['threadicons'] AND $show['inlinemod'])
	{
		$announcecolspan = 6;
	}
	else if (!$show['threadicons'] AND !$show['inlinemod'])
	{
		$announcecolspan = 4;
	}
	else
	{
		$announcecolspan = 5;
	}

	$mindate = TIMENOW - 2592000; // 30 days

	$announcements = $db->query_read_slave("
		SELECT
			announcement.announcementid, startdate, title, announcement.views,
			user.username, user.userid, user.usertitle, user.customtitle, user.usergroupid,
			IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid
			" . (($vbulletin->userinfo['userid']) ? ", NOT ISNULL(announcementread.announcementid) AS readannounce" : "") . "
		FROM " . TABLE_PREFIX . "announcement AS announcement
		" . (($vbulletin->userinfo['userid']) ? "LEFT JOIN " . TABLE_PREFIX . "announcementread AS announcementread ON (announcementread.announcementid = announcement.announcementid AND announcementread.userid = " . $vbulletin->userinfo['userid'] . ")" : "") . "
		LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = announcement.userid)
		WHERE startdate <= " . TIMENOW . "
			AND enddate >= " . TIMENOW . "
			AND " . fetch_forum_clause_sql($foruminfo['forumid'], 'forumid') . "
		ORDER BY startdate DESC, announcement.announcementid DESC
		" . iif($vbulletin->options['oneannounce'], "LIMIT 1"));

	while ($announcement = $db->fetch_array($announcements))
	{
		fetch_musername($announcement);
		$announcement['postdate'] = vbdate($vbulletin->options['dateformat'], $announcement['startdate']);
		if ($announcement['readannounce'] OR $announcement['startdate'] <= $mindate)
		{
			$announcement['statusicon'] = 'old';
		}
		else
		{
			$announcement['statusicon'] = 'new';
		}
		$announcement['views'] = vb_number_format($announcement['views']);
		$announcementidlink = iif(!$vbulletin->options['oneannounce'] , "&a=$announcement[announcementid]");

		($hook = vBulletinHook::fetch_hook('forumdisplay_announcement')) ? eval($hook) : false;

		eval('$announcebits .= "' . fetch_template('threadbit_announcement') . '";');
	}

Kategori vBulletin
Görüntüleme 132 Yorumlar 0 Edit Tags Blog Başlığını Email ile Gönder
Toplam Trackbacks 0

Trackbacks