Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Настройка и Изменение (http://forum.mynuke.ru/forumdisplay.php?f=11)
-   -   Обсуждение темы "Оптимизация PHP-NUKE" (http://forum.mynuke.ru/showthread.php?t=1273)

Soniks 20.02.2006 13:19

Kxu правильно мыслите, так тоже можно, каждый способ выбирается для каждого скрипта, порой бывает лучше делать много запросов в бд (т.е. помещать все в отдельную таблицу), но зато и скрипт работать может обширнее.

Kxu 20.02.2006 14:13

Soniks , все...буду пробовать и сравнивать, я люблю все вокруг да около посмотреть, попробовать, сравнить и сделать вывод....спасибо!!!

GreatXSP 23.02.2006 17:18

oneway4y_nuke1.nuke_session
note : The storage engine for the table doesn't support check

Вот чего выдает проверка базы полсле внесения изменений в нюкесессион. Также сайт начинает глючить в firefox.

Вот оптимизация новостей очень помогла

Soniks 24.02.2006 00:39

GreatXSP ну правильно так и должно выдовать, а то что у вас проблема в firefox, то ищити в другом месте

Alexfilus 24.02.2006 14:01

у меня после оптимизации(момент я не уловил) в админке>управление модулями к каждому модулю стало сперва по 4, а теперь 6 значков! и в разделе модули - тоже самое по 6 строк на 1 модуль. где ошибка?

Soniks 24.02.2006 16:10

Alexfilus что за значки?

GreatXSP 24.02.2006 17:07

Как только я заменяю оптимизированный mainfile на оригинальный - проблемы в фаефокс пропадают.

Soniks 24.02.2006 23:43

GreatXSP ищите конкретный код который вызывает у вас такое.

uzalbert 25.02.2006 11:21

А можно блок вывода последних новостей портала оптимизировать, слишком ного запросов делает аж 12 к БД. :oooo:

Soniks 25.02.2006 16:15

uzalbert это что еще за блок?

uzalbert 25.02.2006 16:33

Soniks встроенный блок PHP-NUKE <User Info >, выстовил на главную страничку, хотел бы за счет этого блока хоть немного уменьшить запросы к БД.

GAMMA 26.02.2006 03:34

Заменил block-Modules на предложенный в статье, стало на 6 запросов меньше делать, но теперь все ссылки видны. Функция "Сделать видимыми?" не работает и теперь вместо короткого основного меню выскакивает монстр на 15 ссылок.

Soniks 26.02.2006 04:45

GAMMA странно.. такого быть не должно, просмотрите в настройках модуля действительно ли там нужные модули стоят как скрытыми в меню?
а вы изменения в mainfile.php делали, т.к. оптимизация бкдет правильно работать, когда вы выполните все изменения

Alexfilus 26.02.2006 14:25

Цитата: Сообщение от Soniks
Alexfilus что за значки?

В админке. Управление модулями: Баннеры, Forums и т.д.

uzalbert 26.02.2006 18:16

А по поводу "встроенный блок PHP-NUKE <User Info >", может как то можно оптимизировать, а то 13 запросов к БД очень много. Помогите пожалуста!!!!!!!!!!!!!

GAMMA 26.02.2006 22:15

Да, у меня не всё встало при оптимизации. Например render_blocks и blocks - видимо из за этого. Я делал по пунктам на локалке, один пункт поменял - обновил, и так всё. Там где нарушалась работа портала, делал откат на шаг назад. Попробую ещё раз всё сразу. У меня сейчас 59 запросов к БД под пользователем на главной. Вижу по этому сайту что ещё работать и работать. Бошльшой респект за подробную пошаговую инструкцию. А то без оптимизации уже при 30-40 посетителях в час хостер начинал отрубать доступ к базе из за превышения лимитов на количество обращений.

uzalbert 27.02.2006 17:07

Люди, может кто поможет. Блок "User Info" много кушает (13 запросов к БД) или есть у кого этот оптимизированный блок, дайте сылочку. Простите что засорил немного эту тему, перепутал с блоком <Last 5 Articles>.

GAMMA 27.02.2006 22:59

доделал всё что смог, 45 запросов под пользователем с главной. некоторые вещи не ставятся на 7.7 а некоторых пунктов вообще не нашёл. но уже и это супер !

Black_Jesus 08.03.2006 06:00

После оптимизации перестали отображаться блоки, которые видны только Админам. Проблема в mainfile.php - п.5 Статьи об оптимизации. Помогите плиз.

Soniks 08.03.2006 18:42

Black_Jesus версию нюки какая?

Black_Jesus 09.03.2006 00:42

Soniks Версия нюки 7.9.
Причём блоки(всё блоки стандартные)
становятся видны только тогда, когда я в меню администрации вхожу
в администрирование блоков. Как только выхожу или вхожу в другой модуль
администрирования - админские блоки пропадают! Так же они не отображаются
и в любом другом месте сайта(разумеется когда я под правами админа, в этом то и беда)!
И насчёт п.5 статьи об оптимизации - проверено опытным путём(без изменений блоки
отображаются, с изменениями - нет), но в чём проблема не понимаю!

Soniks 11.03.2006 02:14

Black_Jesus лично у себя такое не заметил,
если такое происходит, то вас должно вообще выкидывать из админки сайта, попробуйте на другом браузере, может что то сглючило.

Black_Jesus 11.03.2006 03:51

Пробовал на мазиле и на IE - тоже самое!!!
Что характерно, без изменений п.5: 3апрсов при админе 237, без админа 42.
С изменениями 58 - админских, 19 - гостевых соответственно, но не отображаются блоки(могу выслать код, такое ощущение, что всё это происходит из-за удалённой групы "пользователей")
Установлен обычный PHPNuke, разве что, удалена регистрация пользователей в принципе. В итоге получается на сайте могут быть либо гости, либо админы(сайт сугубо новосной, гости лишь могут добавлять коментарии)
На счёт выкидаваня, сам сразу так думал, но идя по админским ссылкам(набирая адрес в браузере) - попадаю на все админские ресурсы без запроса на пароль!!!

Soniks 13.03.2006 02:03

Black_Jesus смотри ПМ

kentbrn 16.03.2006 18:13

После оптимизации новостей index.php файла перестал работать Page_Numbers! как сделать чтоб сново заработало!?
вот код:
Код HTML:
$sql_pn = "select * from ".$prefix."_stories $qdb $querylang $limitpn"; $result_pn = $db->sql_query($sql_pn); $numstories = $db->sql_numrows($result_pn); $numpages = ceil($numstories / $storynum); #if ($numpages > 1 and $new_topic == 0) { if ($numpages > 1) { //opentableno(); echo "<table align=center width=100% cellspacing=\"0\" cellpadding=\"0\" border=\"0\">"; function numeral($n, $s){ $n=abs($n); $a=split(",", $s); $l1=$n-((int)($n/10))*10; $l2=$n-((int)($n/100))*100; if(11<=$l2 and $l2<=14){ $e=$a[2]; } else { if($l1==1) $e=$a[0]; if(2<=$l1 and $l1<=4) $e=$a[1]; if((5<=$l1 and $l1<=9) or $l1==0) $e=$a[2]; } if($e=="") $e=$a[0]; return($e); } $pages_d = numeral($numpages,""._PAGES.""); $perpage2_d = numeral($storynum,""._PERPAGE2.""); $stories_d = numeral($numstories,""._STORIES.""); echo "<tr><td bgcolor=#f0f0f0 class=copy2><center>$stories_d $numstories ($numpages $pages_d "._PERPAGE." $storynum $perpage2_d )<br></td></tr><tr><td bgcolor=#F8F8F8 align=center>" ; if ($pagenum > 1) { $prevpage = $pagenum - 1 ; $leftarrow = "images/left_page.gif" ; if(isset($new_topic)) { echo "<a href=\"modules.php?name=News&amp;new_topic=$new_topic&amp;pagenum =$prevpage\">"; echo "<img src=\"$leftarrow\" align=\"absmiddle\" border=\"0\" hspace=\"3\"></a>"; } else { echo "<a href=\"modules.php?name=News&amp;pagenum=$prevpage\">"; echo "<img src=\"$leftarrow\" align=\"absmiddle\" border=\"0\" hspace=\"3\"></a>"; } } echo "[ " ; for ($i=1; $i < $numpages+1; $i++) { if ($i == $pagenum) { echo "<b>$i</b>"; } else { if(isset($new_topic)) { echo "<a href=\"modules.php?name=News&amp;new_topic=$new_topic&amp;pagenum =$i\">$i</a>"; } else { echo "<a href=\"modules.php?name=News&amp;pagenum=$i\">$i</a>"; } } if ($i < $numpages) { echo " | "; } else { echo " ]"; } } if ($pagenum < $numpages) { $nextpage = $pagenum + 1 ; $rightarrow = "images/right_page.gif" ; if(isset($new_topic)) { echo "<a href=\"modules.php?name=News&amp;new_topic=$new_topic&amp;pagenum =$nextpage\">"; echo "<img src=\"$rightarrow\" align=\"absmiddle\" border=\"0\" hspace=\"3\"></a>"; } else { echo "<a href=\"modules.php?name=News&amp;pagenum=$nextpage\">"; echo "<img src=\"$rightarrow\" align=\"absmiddle\" border=\"0\" hspace=\"3\"></a>"; } }

kentbrn 20.03.2006 11:15

ну кто помогет с пэжнамберами !??

kentbrn 26.03.2006 18:11

оптимизация блоков
 
Всем привет, помогите оптимизировать следующие блоки :
1) block-Sommaire.php около 9 запросов , скачан с модулям Sommaire с mynuke
2) block-User_Info.php стандартный в нюке 7.9. 4 запроса помоему делает

kentbrn 26.03.2006 22:10

еще вот этот блок от копермайн галереи block-CPG-Random_pictures.php

veland 29.03.2006 17:54

проблема с опросами
 
Соникс, вот такая проблема нарисовалась. После того, как я сделал оптимизацию нюки как ты советовал в одной из веток, у меня перестали работать опросы. При попытке посмотреть результаты опроса получаю вот такое фуфло:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/u30155/av-tihonov.ru/www/includes/sql_layer.php on line 416

Проверил, там должно быть корректное значение переменной $res, но его в ней нет. Помогай! Горю...

Soniks 29.03.2006 20:06

veland ну модуль опросов это отдельный разговор... он и был катаким карявым, что бы избавиться от сего нужно

найти:
PHP код:
 $result2 sql_query("SELECT optionCount FROM ".$prefix."_poll_data WHERE pollID='$pollID' AND voteID='$i'"$dbi);
  
$object sql_fetch_object($result2$dbi);
  
$optionCount $object->optionCount

заменить на:
PHP код:
 $result2 $db->sql_query("SELECT optionCount FROM ".$prefix."_poll_data WHERE pollID='$pollID' AND voteID='$i'");
  
$object $db->sql_fetchrow($result2);
  
$optionCount $object['optionCount']; 

найти:
PHP код:
 $result3 sql_query("SELECT pollID, optionText, optionCount, voteID FROM ".$prefix."_poll_data WHERE pollID='$pollID' AND voteID='$i'"$dbi);
  
$object sql_fetch_object($result3$dbi);
  if(
is_object($object)) {
   
$optionText $object->optionText;
   
$optionCount $object->optionCount

заменить на:
PHP код:
 $result3 $db->sql_query("SELECT pollID, optionText, optionCount, voteID FROM ".$prefix."_poll_data WHERE pollID='$pollID' AND voteID='$i'");
  
$object2 $db->sql_fetchrow($result3);
   
$optionText $object2['optionText'];
   
$optionCount $object2['optionCount']; 

Найти:
PHP код:
 echo "</td></tr>";
   }
  }
 } 

заменить на:
PHP код:
 echo "</td></tr>";
   }
 } 

должно помочь

kentbrn 30.03.2006 12:51

Уважаемый soniks помоги разобраться в вышеперечисленными мною блоками и решить проблему с пэйджами ! и еще возник вопрос в блоке block-User_Info.php
$numrows = $db->sql_numrows($db->sql_query("SELECT user_id FROM $user_prefix"._users.""));
$result = $db->sql_query("SELECT uname, guest FROM $prefix"._session." WHERE guest='0'");
$member_online_num = $db->sql_numrows($result);
$who_online_now = "";
$i = 1;
while ($session = $db->sql_fetchrow($result)) {
if (isset($session["guest"]) and $session["guest"] == 0) {
if ($i < 10) {
$who_online_now .= "$i.<A HREF=\"". IPB_DIR . "/index.php?showuser=$user_id\">$session[uname]</a><br>\n";
} else {
$who_online_now .= "<A HREF=\"". IPB_DIR . "/index.php?showuser=$user_id\">$session[uname]</a><br>\n";
}
как сделать чтоб это заработало!? $user_id чтоб был пользователя который в онлайн сидит

Soniks 30.03.2006 21:54

PHP код:
 $result $db->sql_query("SELECT s.uname, u.user_id  FROM $prefix"._session." AS s LEFT JOIN $prefix"._users." AS u ON(u.username=s.uname) WHERE s.guest='0'");
$member_online_num $db->sql_numrows($result);
$who_online_now "";
$i 1;
while (
$session $db->sql_fetchrow($result)) {
if (
$i 10) {
$who_online_now .= "$i.<A HREF=\""IPB_DIR "/index.php?showuser=$session[user_id]\">$session[uname]</a><br>\n";
} else {
$who_online_now .= "<A HREF=\""IPB_DIR "/index.php?showuser=$session[user_id]\">$session[uname]</a><br>\n";
}
$i++;


Kilo 31.03.2006 15:21

Soniks, вопрос такой. Nuke 7,9 RUS, Решил оптимизировать свой сайт у меня сейчас 460 запросов на главной.
так вот после изменения файла mainfile.php количество запосов стало 156, это результат.
Но стои у меня один блок называется time_left, (отсчитывает время до события), вот он перестал работать, пишет ошибку :
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in z:\home\yugbiznes.com\www\blocks\block-Towncrier_ticker.php on line 31

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in z:\home\yugbiznes.com\www\includes\sql_layer.php on line 285

Вот код строки 285 файла sql_layer.php:
Код:
$row = mysql_fetch_row($res);


видимо это потому что блок от старых версий...

и после изменений файла news/index.php в новостях перестали отображаться картинки от тем.

Soniks 31.03.2006 17:40

Kilo нужно изменить способ подключения к бд используя переменную $db, а не $dbi

mysql_fetch_array на $db->sql_fetchrow
mysql_query на $db->sql_query
mysql_fetch_row на $db->sql_fetchrow
mysql_num_rows на $db->sql_numrows
mysql_free_result на $db->sql_freeresult

Kilo 31.03.2006 18:07

Спасибо Soniks, заработало!

kentbrn 31.03.2006 20:54

Вложений: 1
Спасибо Soniks блок заработал,правда оптимизировать хотелось бы его еще оптимизировать 4 запроса кушает, внизу код:
Код:
if (eregi("block-User_Info.php",$_SERVER['PHP_SELF'])) { Header("Location: index.php"); die(); } $content = ""; global $user, $cookie, $prefix, $user_prefix, $db, $anonymous, $sitekey; mt_srand ((double)microtime()*1000000); $maxran = 1000000; $random_num = mt_rand(0, $maxran); $datekey = date("F j"); $rcode = hexdec(md5($_SERVER[HTTP_USER_AGENT] . $sitekey . $random_num . $datekey)); $code = substr($rcode, 2, 10); cookiedecode($user); $uname = $cookie[1]; $lasturow = $db->sql_fetchrow($db->sql_query("SELECT user_id, username FROM $user_prefix"._users." ORDER BY user_id DESC LIMIT 0,1")); $lastuser = filter($lasturow['username'], nohtml); $user_id = ($lasturow['user_id']); $numrows = $db->sql_numrows($db->sql_query("SELECT user_id FROM $user_prefix"._users."")); $result = $db->sql_query("SELECT s.uname, u.user_id FROM $prefix"._session." AS s LEFT JOIN $prefix"._users." AS u ON(u.username=s.uname) WHERE s.guest='0'"); $member_online_num = $db->sql_numrows($result); $who_online_now = ""; $i = 1; while ($session = $db->sql_fetchrow($result)) { if ($i < 10) { $who_online_now .= "$i.<A HREF=\"". IPB_DIR . "/index.php?showuser=$session[user_id]\">$session[uname]</a><br>\n"; } else { $who_online_now .= "<A HREF=\"". IPB_DIR . "/index.php?showuser=$session[user_id]\">$session[uname]</a><br>\n"; } $i++; } $Today = getdate(); //Formatting Current Date $month = $Today['month']; $mday = $Today['mday']; $year = $Today['year']; //Formatting Previous Date $pmonth = $Today['month']; $pmday = $Today['mday']; $pmday = $mday-1; $pyear = $Today['year']; //Month conversion into numeric mode if ($pmonth=="January") { $pmonth=1; } else if ($pmonth=="February") { $pmonth=2; } else if ($pmonth=="March") { $pmonth=3; } else if ($pmonth=="April") { $pmonth=4; } else if ($pmonth=="May") { $pmonth=5; } else if ($pmonth=="June") { $pmonth=6; } else if ($pmonth=="July") { $pmonth=7; } else if ($pmonth=="August") { $pmonth=8; } else if ($pmonth=="September") { $pmonth=9; } else if ($pmonth=="October") { $pmonth=10; } else if ($pmonth=="November") { $pmonth=11; } else if ($pmonth=="December") { $pmonth=12; }; $test = mktime (0,0,0,$pmonth,$pmday,$pyear,1); //Creating SQL parameter $curDate2 = "%".$month[0].$month[1].$month[2]."%".$mday."%".$year."%"; $preday = strftime ("%d",$test); $premonth = strftime ("%B",$test); $preyear = strftime ("%Y",$test); $curDateP = "%".$premonth[0].$premonth[1].$premonth[2]."%".$preday."%".$preyear."%"; $guest_online_num = $db->sql_numrows($db->sql_query("SELECT uname FROM ".$prefix."_session WHERE guest='1'")); $member_online_num = $db->sql_numrows($db->sql_query("SELECT uname FROM ".$prefix."_session WHERE guest='0'")); $who_online_num = $guest_online_num + $member_online_num; $content .= "<form action=\"modules.php?name=Your_Account\" method=\"post\">"; $content .= "<img src=\"images/blocks/group.gif\" ><b>"._BVISIT.": $who_online_num</b>\n<br>\n"; $content .= "<img src=\"images/blocks/ur-anony.gif\" > "._BVIS.": <b>$guest_online_num</b><br>\n"; $content .= "<img src=\"images/blocks/ur-member.gif\" > "._BMEM.": <b>$member_online_num </b></font><br>\n"; if ($member_online_num > 0) { $content .= "<font class=user>$who_online_now </font><br>"; } $content .= "<img src=\"images/blocks/group.gif\"> <b>"._BMEMP.":</b></font><br>\n"; $content .= "<img src=\"images/blocks/link.gif\">"._BLATEST.": <A HREF=\"". IPB_DIR . "/index.php?showuser=$user_id\"><b>$lastuser</b></a><br>\n"; $content .= "<img src=\"images/blocks/link.gif\"> "._BOVER.": <b>$numrows</b></font>\n"; $content .= "</form>";

так же блок block-CPG-Random_pictures.php 5 запросов :(
помоги оптимизировать пожалуйста, надеюсь на твою помощь!

Soniks 31.03.2006 22:05

граждане прошу не требовать и не просить то или иное! по мере появления свободного времени я буду выкладывать оптимизацию! а то рассердите, и буду банить! :evil:

Kilo 07.04.2006 11:38

Soniks, оптимизировал пока только mainfile.php и блок админитсрация перестал выводить инфу. Возвращаю mainfile.php до оптимизации, блок работает. Nuke 7.9 rus без патчей и хаков.
Где смотреть код? Как должно быть?

Выводит ошибку: Warning: Missing argument 1 for adminblock() in /home/196021/http/mainfile.php on line 878.

А вот код строки 878: function adminblock($blockinfo) {

Soniks 07.04.2006 12:44

Kilo не целиком оптимизировали mainfile.php, пропустили код в вызови функции adminblock($blockinfo) в функции blocks()

Kilo 15.04.2006 17:50

Цитата: Сообщение от Soniks
Kilo не целиком оптимизировали mainfile.php, пропустили код в вызови функции adminblock($blockinfo) в функции blocks()



Итак, четыре раза перепробовал прооптимизировать mainfile.php, думал мож гдето сточку пропускаю, ну нет все точно, в копейку сделано!
И таже самая ошибка. Блок-админка не отображается...
И что самое интересное, это только на IE, сегодня открыл сайт через Оперу, там все прекрасно! В чем же тогда соль...?


Часовой пояс GMT +4, время: 05:20.

Copyright © 2005 by Soniks