очень много запросов к бд
# 1
13.01.2006, 03:10
Здравствуйте
У меня большая проблема, на днях решил поставить счетчик запросов к БД и был очень сильно растроен.
На главной странице около 100 запросов к БД, а в самом каталоге файлов местами до 300
(каталог не родной, Enhanced Downloads Module 2.0 )
Это ужас просто. Неужели данный модуль делали с такими ошибками. Но при том скорость запросов за 0.052498 с.
Хочу узнать как устронить данную проблему ? Где надо править код.
П.С.
Прошу не советовать перейти на другую систему, на тот же Slaed т.к. жалко потраченных сил.
Всё для Смартфона и не только на ModernMobile.NET
13.01.2006, 03:35
Andruha начните с определения какие функции в php-nuke нужны, а какие нет, т.к. в php-nuke есть оочень ного не нужных функций, которые и кушают запросы, например, рефералы, статистика.
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".
13.01.2006, 09:18
Andruha day sayt dlynut?
Engine: php-nuke 7.9 phpbb: 2.0.17
13.01.2006, 10:02
Цитата: Сообщение от Soniks
Andruha начните с определения какие функции в php-nuke нужны, а какие нет, т.к. в php-nuke есть оочень ного не нужных функций, которые и кушают запросы, например, рефералы, статистика.
Лишнее убрал уже давно.
http://modernmobile.net
Всё для Смартфона и не только на ModernMobile.NET
13.01.2006, 16:56
у тебя 81 запрос это нормально!!! снижай еще меньше
Engine: php-nuke 7.9 phpbb: 2.0.17
13.01.2006, 18:38
где можно найти материал по данной теме ?
сам не разберусь.
Всё для Смартфона и не только на ModernMobile.NET
13.01.2006, 20:40
Вот к примеру простой блок для вывода последнех статей от Small Pages и только он делает 5 запросов к базе:
Код:
<?php
if (eregi("block-Top10_Small_Pages.php",$_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}
global $prefix, $db;
$a = 1;
$result = $db->sql_query("SELECT pid, title, UNIX_TIMESTAMP(date) as postdate, counter FROM ".$prefix."_smallpages WHERE active=1 ORDER
BY pid DESC LIMIT 0,5");
while ($row = $db->sql_fetchrow($result)) {
$pid = intval($row['pid']);
$title = stripslashes($row['title']);
$p_date = date("d/m/Y", $row["postdate"]);
$kol_vo = $db->sql_numrows($db->sql_query("SELECT tid FROM ".$prefix."_smallpages_comments WHERE
pid='$pid'"));
$content .= "<strong><big>·</big></strong> <a
href=\"modules.php?name=Pages&go=page&pid=$pid\"><b>$title</b></a> <em>$p_date</em><br> ";
$a++;
}
?>
Всё для Смартфона и не только на ModernMobile.NET
14.01.2006, 11:27
Andruha Можно попробывать заменить несколько функций в файле mainfile большого снижения нагрузки не обещаю но всеже!
Открываем mainfile.php
Находим функцию:
PHP код:
function is_admin ( $admin ) {
Заменяем на:
PHP код:
function is_admin ( $admin ) {
global $prefix , $db ;
static $adminSave ;
if (isset( $adminSave )) return ( $adminSave );
if(! is_array ( $admin )) {
$admin = base64_decode ( $admin );
$admin = explode ( ":" , $admin );
}
$aid = $admin [ 0 ];
$pwd = $admin [ 1 ];
if ( $aid != "" AND $pwd != "" ) {
$aid = trim ( $aid );
$sql = "SELECT pwd FROM " . $prefix . "_authors WHERE aid=' $aid '" ;
$result = $db -> sql_query ( $sql );
$row = $db -> sql_fetchrow ( $result );
$pass = $row [ 'pwd' ];
if ( $pass == $pwd && $pass != "" ) {
return $adminSave = 1 ;
}
}
return $adminSave = 0 ;
}
Далее находим:
PHP код:
function is_user ( $user ) {
Заменяем на:
PHP код:
function is_user ( $user ) {
global $db , $user_prefix ;
static $userSave ;
if (isset( $userSave )) return ( $userSave );
if (! is_array ( $user )) {
$user = base64_decode ( $user );
$user = explode ( ":" , $user );
}
$uid = $user [ 0 ];
$pwd = $user [ 2 ];
$uid = intval ( $uid );
if ( $uid != "" AND $pwd != "" ) {
$sql = "SELECT user_password FROM " . $user_prefix . "_users WHERE user_id=' $uid '" ;
$result = $db -> sql_query ( $sql );
$row = $db -> sql_fetchrow ( $result );
$pass = $row [ 'user_password' ];
if ( $pass == $pwd && $pass != "" ) {
return $userSave = 1 ;
}
}
return $userSave = 0 ;
}
Далее находим:
Заменяем на:
PHP код:
function blocks ( $side ) {
global $storynum , $prefix , $multilingual , $currentlang , $db , $admin , $user ;
static $barr ;
if ( $multilingual == 1 ) {
$querylang = "AND (blanguage=' $currentlang ' OR blanguage='')" ;
} else {
$querylang = "" ;
}
if ( strtolower ( $side [ 0 ]) == "l" ) {
$pos = "l" ;
} elseif ( strtolower ( $side [ 0 ]) == "r" ) {
$pos = "r" ;
} elseif ( strtolower ( $side [ 0 ]) == "c" ) {
$pos = "c" ;
} elseif ( strtolower ( $side [ 0 ]) == "d" ) {
$pos = "d" ;
}
$side = $pos ;
if (!isset( $barr )){
$sql = "SELECT bid, bkey, title, content, url, blockfile, view, expire, action, subscription, bposition FROM " . $prefix . "_blocks WHERE active='1' $querylang ORDER BY weight ASC" ;
$result = $db -> sql_query ( $sql );
while(list( $bid , $bkey , $title , $content , $url , $blockfile , $view , $expire , $action , $subscription , $bposition ) = $db -> sql_fetchrow ( $result )) {
$bid = intval ( $bid );
$view = intval ( $view );
$barr []= array( $bid , $bkey , $title , $content , $url , $blockfile , $view , $expire , $action , $subscription , $bposition );
}
}
for ( $i = 0 ; $i < sizeof ( $barr ); $i ++){
list ( $bid , $bkey , $title , $content , $url , $blockfile , $view , $expire , $action , $subscription , $bposition )= $barr [ $i ];
if ( $bposition == $side ){
$now = time ();
if ( $sub == 0 OR ( $sub == 1 AND ! paid ())) {
if ( $expire != 0 AND $expire <= $now ) {
if ( $action == "d" ) {
$db -> sql_query ( "UPDATE " . $prefix . "_blocks SET active='0', expire='0' WHERE bid=' $bid '" );
return;
} elseif ( $action == "r" ) {
$db -> sql_query ( "DELETE FROM " . $prefix . "_blocks WHERE bid=' $bid '" );
return;
}
}
if ( $view == 0 ) {
render_blocks ( $side , $blockfile , $title , $content , $bid , $url );
} elseif ( $view == 1 AND is_user ( $user ) || is_admin ( $admin )) {
render_blocks ( $side , $blockfile , $title , $content , $bid , $url );
} elseif ( $view == 2 AND is_admin ( $admin )) {
render_blocks ( $side , $blockfile , $title , $content , $bid , $url );
} elseif ( $view == 3 AND ! is_user ( $user ) || is_admin ( $admin )) {
render_blocks ( $side , $blockfile , $title , $content , $bid , $url );
}
}
}
}
}
Вот вобщем это минимум что можно зделать!
Будь проще и люди к тебе потянутся :)
14.01.2006, 16:39
Master это тока для него или все могут сделать
Engine: php-nuke 7.9 phpbb: 2.0.17
14.01.2006, 18:58
Master спасибо, на несколько запросов стало меньше.
Только вот это минимум, что можно сделать :(
Всё для Смартфона и не только на ModernMobile.NET
Опции темы
Поиск в этой теме
Опции просмотра
Линейный вид
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 11:35 .