Seite 2 von 3

Verfasst: 19.02.2006 17:38
von hagily
Hallo!

Das erste was mit sofort ins auge Gesprungen ist, ist folgendes:
//-- mod : jumpbox -------------------------------------------------------------
//-- mod : spam topic ----------------------------------------------------------
//-- mod : print topic ---------------------------------------------------------
//-- mod : multivote -----------------------------------------------------------
//-- mod : gender --------------------------------------------------------------
//-- mod : attachmod -----------------------------------------------------------
//-- mod : categories hierarchy ------------------------------------------------
Und noch viele Andere (unnötige?) //......

Lösche docheinmal alles unnötige
Felix

Verfasst: 19.02.2006 17:48
von mgutt
Kommentare werden vom PHP Parser ignoriert :-?

Verfasst: 19.02.2006 17:53
von hagily
mgutt hat geschrieben:Kommentare werden vom PHP Parser ignoriert :-?
Aber sie werden gelesen. Und das macht das Forum langsam. Ich glaube aber dass die geschwindigkeit davon nur unwesentlich beeinflusst wird.

Verfasst: 19.02.2006 17:55
von mgutt
Eben nicht. Sie werden ignoriert.

Siehe:
http://www.php-faq.de/q/q-stil-kommentare.html

:wink:

Verfasst: 24.02.2006 18:46
von mgutt
Ich wurde gefragt was zu tun ist um die Abfrage zu beschleunigen.

suche in viewtopic.php nach:

Code: Alles auswählen

$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid
	FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt
	WHERE p.topic_id = $topic_id
		$limit_posts_time
		AND pt.post_id = p.post_id
		AND u.user_id = p.poster_id
	ORDER BY p.post_time $post_time_order
	LIMIT $start, ".$board_config['posts_per_page'];
und ersetze mit:

Code: Alles auswählen

//-- mod : speed up topic ------------------------------------------------------
//-- delete
/*
$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid
	FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt
	WHERE p.topic_id = $topic_id
		$limit_posts_time
		AND pt.post_id = p.post_id
		AND u.user_id = p.poster_id
	ORDER BY p.post_time $post_time_order
	LIMIT $start, ".$board_config['posts_per_page'];
*/
//-- add
// Pages
$total_pages = ceil($total_replies/$board_config['posts_per_page']); 
$on_page = floor($start / $board_config['posts_per_page']) + 1; 
if ($start > 100 && ($total_replies / 2) < $start) { 
    $reverse = TRUE; 
    $last_page_posts = $total_replies - ($board_config['posts_per_page'] * ($total_pages - 1)); 
}
// Reverse & Post Id's
$p_array = array(); 
if (isset($reverse)) { 
    $limit_string = ($total_pages == $on_page) ? $last_page_posts : ($last_page_posts + ($total_pages - $on_page - 1) * $board_config['posts_per_page'] ).','. $board_config['posts_per_page']; 
    $sql = "SELECT p.post_id FROM " . POSTS_TABLE . " p USE INDEX(topic_n_id) WHERE p.topic_id = $topic_id $limit_posts_time ORDER BY p.post_id DESC LIMIT $limit_string" ; 
} else { 
    $sql = "SELECT p.post_id FROM " . POSTS_TABLE . " p WHERE p.topic_id = $topic_id $limit_posts_time LIMIT $start, " . $board_config['posts_per_page']; 
}
if ( !($result = $db->sql_query($sql)) ) 
{ 
   message_die(GENERAL_ERROR, "Could not obtain post index information.", '', __LINE__, __FILE__, $sql); 
} 
while (list($p_id) = $db->sql_fetchrow($result)) { 
    $p_array[] = $p_id; 
} 
$post_index = implode(",",$p_array);
// Pull the data
$sql = "SELECT pt.post_sub_title, u.username, u.user_id, u.user_posts, u.user_from, u.user_firstname, u.user_ebayname, u.user_car, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, u.user_gender, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid
   FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt 
   WHERE p.post_id in ($post_index) 
      AND pt.post_id = p.post_id 
      AND u.user_id = p.poster_id 
   ORDER BY p.post_time $post_time_order";
//-- fin mod : speed up topic --------------------------------------------------

Verfasst: 24.02.2006 19:33
von Gumfuzi
Super, aber ab wann ist diese Änderung sinnvoll (ab wieviel Posts/Topic)?
und wirkt sich das negativ auf kleine Topics aus?

Verfasst: 24.02.2006 19:50
von mgutt
Nein, negative Eigenschaften für kleine Topics habe ich bisher nicht festgestellt. Ab ca. 5.000 Antworten pro Topic sollte man diese Änderung berücksichtigen. Vorher bringt sie wahrscheinlich nichts.

Aber das muss man selbst man analysieren.

Mach einfach mal einen Tag lang Zeitanalyse für die alte und für die neue Abfrage. Ich habe in jedem Fall durchweg bessere Ergebnisse erreicht.

Im Moment macht mir nur die posting.php Probleme. Da muss ich mal schauen, warum die nicht mag ;)

Verfasst: 24.02.2006 22:02
von Gumfuzi
Danke!!

Ist es bei euch auch so (weil ich gerade posting.php lese), daß das Absenden eines Postings immer ca. 2-3x länger dauert, als alle anderen Abfragen?
Ist das, weil es einfach länger dauert, etwas in die DB zu SCHREIBEN und weil es zugleich schon viele Postings sind?

Verfasst: 25.02.2006 01:22
von mgutt
Jo, wenn schon viele Antworten getätigt wurden, scheint das weitere Antworten immer länger zu dauern. Bei mir ist es bei größerer Auslastung sogar so, dass das bis zum Absturz führt. (Memory Overrun).

Verfasst: 25.02.2006 12:48
von Gumfuzi
Aha OK, dachte mir schon soetwas - ev. gibt es auch hier irgend wann einmal eine Lösung *hoff*