Mod mit Endlosschleife?
Verfasst: 23.01.2006 11:52
Hallo,
es geht um den adv_top5.php MOD... kann es sein das da eine Endlosschleife ist, die permanent die Datenbank abfragt und dadurch
das Forum elendig langsam macht??
Ich seh nix was nach Endlosschleife aussieht!
Gibt es evtl. eine neue Version oder anderen MOD der mit im Portal die
10 aktuellsten posts anzeigt?
oder kann man den MOD dazu zwingen nur alle 60 Sekunden nach neuen Threads zu schauen?
Momentan scheint er öfter pro Sekunde nach neuen threads zu schauen!
[/code]
es geht um den adv_top5.php MOD... kann es sein das da eine Endlosschleife ist, die permanent die Datenbank abfragt und dadurch
das Forum elendig langsam macht??
Ich seh nix was nach Endlosschleife aussieht!
Gibt es evtl. eine neue Version oder anderen MOD der mit im Portal die
10 aktuellsten posts anzeigt?
oder kann man den MOD dazu zwingen nur alle 60 Sekunden nach neuen Threads zu schauen?
Momentan scheint er öfter pro Sekunde nach neuen threads zu schauen!
Code: Alles auswählen
<?php
/***************************************************************************
* adv_top5.php
* -------------------
* Contains GPL code copyright of phpBB group.
*
* MOD Name: Top5 topics
* Author: OOHOO
* Version: 1.x.x for phpBB 2 Beta serial
* Version: 2.0.0 for phpBB 2 RC serial
* Version: 2.1.0 for phpBB 2.0.0
*
* Author: iamelton
* Version: 2.2.0 for hypercell effect in display
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. --- $phpbb_root_path = "./";
*
***************************************************************************/
define('IN_PHPBB', true);
$phpbb_root_path = "phpBB2/";
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Mod setting
//
// Topics text length
$MAX_STR_LEN = 30;
// Topics to display
$MAX_TOPICS = 10;
// 0 => users can see all topics including authorized issue(but they cant read the posts)
// 1 => users can see only authorized topics
$AUTH_SECRUITY = 1;
function cutStr($str) {
global $MAX_STR_LEN;
$str = (strlen($str) > $MAX_STR_LEN) ? (substr($str, 0, $MAX_STR_LEN - 1) . "...") : $str;
return $str;
}
//
// gzip_compression
//
$do_gzip_compress = FALSE;
if($board_config['gzip_compress'])
{
$phpver = phpversion();
if($phpver >= "4.0.4pl1")
{
if(extension_loaded("zlib"))
{
ob_start("ob_gzhandler");
}
}
else if($phpver > "4.0")
{
if(strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip'))
{
if(extension_loaded("zlib"))
{
$do_gzip_compress = TRUE;
ob_start();
ob_implicit_flush(0);
header("Content-Encoding: gzip");
}
}
}
}
header ("Cache-Control: no-store, no-cache, must-revalidate");
header ("Cache-Control: pre-check=0, post-check=0, max-age=0", false);
header ("Pragma: no-cache");
header ("Expires: " . gmdate("D, d M Y H:i:s", time()) . " GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
init_userprefs($userdata);
//
// End session management
//
// Find which forums are visible for this user
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata);
$auth_forum_ary = array();
// Get forum info
$sql = "SELECT forum_id FROM " . FORUMS_TABLE;
if( !$q_forums = $db->sql_query($sql) )
{
message_die(GENERAL_MESSAGE, 'ADV_TOP5 MOD ERROR!!');
}
// Authorized forums info
while( $forum_row = $db->sql_fetchrow($q_forums) )
{
$forum_id = $forum_row['forum_id'];
if( $is_auth_ary[$forum_id]['auth_read'] == 1)
{
array_push($auth_forum_ary, $forum_id);
}
}
if( sizeOf($auth_forum_ary) == 0 || !$AUTH_SECRUITY )
{
$auth_forums = "";
}
else
{
$auth_forums = 'AND f.forum_id IN(';
if(sizeOf($auth_forum_ary) > 1)
{
$auth_forums .= implode (',', $auth_forum_ary);
}
else
{
$auth_forums .= $auth_forum_ary[0];
}
$auth_forums .= ')';
}
// select mode
switch($mode)
{
case 'last':
$sortby = "topic_last_post_id";
break;
case 'hot':
$sortby = "topic_views";
break;
case 'top':
$sortby = "topic_replies";
break;
default:
$sortby = "topic_last_post_id";
$mode = "last";
break;
}
// nav links
$last_link = ( ($mode == "Beitraege") ? "<font style=\"{color: #ff006e}\">« letzte Beiträge $MAX_TOPICS »</font>" : ('<a href="' . append_sid("adv_top5.$phpEx?mode=last") . '" class="nav">letzte Beiträge</a>'));
$hot_links = ( ($mode == "Aufrufe") ? "<font style=\"{color: #ff006e}\">« meiste Aufrufe $MAX_TOPICS »</font>" : ('<a href="' . append_sid("adv_top5.$phpEx?mode=hot") . '" class="nav">meiste Aufrufe</a>'));
$top_links = ( ($mode == "Antworten") ? "<font style=\"{color: #ff006e}\">« meiste Antworten $MAX_TOPICS »</font>" : ('<a href="' . append_sid("adv_top5.$phpEx?mode=top") . '" class="nav">meiste Antworten</a>'));
// set template
$template->set_filenames(array("body" => "adv_top5_body.tpl"));
$template->assign_vars(array(
"icon_url" => $images['icon_latest_reply'],
"icon_alt" => $lang['View_latest_post'],
"nav_links" => "$last_link $hot_links $top_links"
));
// query
$sql = "SELECT topic_id, topic_title, topic_poster, topic_views, topic_replies, topic_last_post_id, f.forum_id, forum_name
FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f
WHERE t.forum_id = f.forum_id
AND topic_moved_id = '0'
$auth_forums
ORDER BY $sortby DESC LIMIT 0, $MAX_TOPICS";
if( !$result = $db->sql_query($sql) )
{
echo '<p align="center"><font color="red"><b>ADV_TOPN_MOD TOPICS QUERY ERROR!!</b></font></p>';
exit;
}
// fetch rows
while( $rows = $db->sql_fetchrow($result) )
{
$topic_url = append_sid("phpBB2/viewtopic.$phpEx?t=" . $rows['topic_id']);
$forum_url = append_sid("phpBB2/viewforum.$phpEx?f=" . $rows['forum_id']);
$topic_poster = $rows['topic_poster'];
$topic_last_post_id = $rows['topic_last_post_id'];
// Grab topic poster and last replier data
$sql = "SELECT post_username, user_id, username
FROM " . POSTS_TABLE . ", " . USERS_TABLE . "
WHERE topic_id = '" . $rows['topic_id'] . "'
AND poster_id = user_id
ORDER BY post_id LIMIT 0, 1";
if( !$p_result = $db->sql_query($sql) )
{
message_die(GENERAL_MESSAGE, 'ADV_TOP5 MOD TOPIC_POSTER QUERY ERROR!!');
}
$p_row = $db->sql_fetchrow($p_result);
$poster_name = ( $topic_poster != ANONYMOUS ) ? $p_row['username'] : ( !$p_row['post_username'] ? $lang['Guest'] : $p_row['post_username']);
$poster_url = ( $topic_poster != ANONYMOUS && !$p_row['post_username'] ) ? ('<a href="' . append_sid("$phpBB2/profile.$phpEx?mode=viewprofile&u=$topic_poster") . '" target="_top">' . "$poster_name</a>") : $poster_name;
$sql = "SELECT post_username, user_id, username, post_time
FROM " . POSTS_TABLE . ", " . USERS_TABLE . "
WHERE post_id = '$topic_last_post_id'
AND poster_id = user_id";
if( !$r_result = $db->sql_query($sql) )
{
message_die(GENERAL_MESSAGE, 'ADV_TOP5 MOD LAST_REPLIER QUERY ERROR!!');
}
$r_row = $db->sql_fetchrow($r_result);
$replier_id = $r_row['user_id'];
$replier_name = ( $replier_id != ANONYMOUS ) ? $r_row['username'] : ( !$r_row['post_username'] ? $lang['Guest'] : $r_row['post_username']);
$replier_url = ( $replier_id != ANONYMOUS && !$r_row['post_username'] ) ? ('<a href="' . append_sid("$phpBB2/profile.$phpEx?mode=viewprofile&u=$replier_id") . '" target="_top">' . "$replier_name</a>") : $replier_name;
$last_post_url = append_sid("$phpBB2/viewtopic.$phpEx?p=$topic_last_post_id#$topic_last_post_id");
$template->assign_block_vars("toprow", array(
"forum_name" => $rows['forum_name'],
"forum_url" => $forum_url,
"topic" => cutStr($rows['topic_title']),
"topic_url" => $topic_url,
"topic_views" => $rows['topic_views'],
"topic_replies" => $rows['topic_replies'],
"post_time" => create_date($board_config['default_dateformat'], $r_row['post_time'], $board_config['board_timezone']),
"poster_url" => $poster_url,
"replier_url" => $replier_url,
"last_post_url" => $last_post_url
));
}
$template->assign_vars(array(
'S_CONTENT_DIRECTION' => $lang['DIRECTION'],
'S_CONTENT_ENCODING' => $lang['ENCODING'],
'T_HEAD_STYLESHEET' => $theme['head_stylesheet'],
'T_BODY_BGCOLOR' => '#'.$theme['body_bgcolor'],
'T_BODY_TEXT' => '#'.$theme['body_text'],
'T_BODY_LINK' => '#'.$theme['body_link'],
'T_BODY_VLINK' => '#'.$theme['body_vlink'],
'T_TR_COLOR1' => '#'.$theme['tr_color1'],
'T_TR_COLOR2' => '#'.$theme['tr_color2'],
'T_TD_COLOR1' => '#'.$theme['td_color1'],
'T_TD_COLOR2' => '#'.$theme['td_color2'],
'L_FORUM' => $lang['Forum'],
'L_TOPICS' => $lang['Topics'],
'L_REPLIES' => $lang['Replies'],
'L_AUTHOR' => $lang['Author'],
'L_VIEWS' => $lang['Views'],
'L_POSTS' => $lang['Posts'],
'L_LASTPOST' => $lang['Last_Post']
));
//
// Generate the page
//
//$gen_simple_header = TRUE;
//include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->pparse("body");
$db->sql_close();
//
// Compress buffered output if required
// and send to browser
//
if($do_gzip_compress)
{
//
// Borrowed from php.net!
//
$gzip_contents = ob_get_contents();
ob_end_clean();
$gzip_size = strlen($gzip_contents);
$gzip_crc = crc32($gzip_contents);
$gzip_contents = gzcompress($gzip_contents, 9);
$gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);
echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
echo $gzip_contents;
echo pack("V", $gzip_crc);
echo pack("V", $gzip_size);
}
exit;
?>