PDA

View Full Version : Обсуждение темы "Оптимизация PHP-NUKE"


Soniks
12.02.2006, 21:46
В данной теме предлагаю обсуждать вопросы, связанные с темой Оптимизация PHP-NUKE (http://forum.mynuke.ru/showthread.php?t=1260).

kor
14.02.2006, 12:19
в данной статье Вы использовали свои разработки или все таки другие( есть подозрение что часть код или даже куски кода взяты с cms конкурентов)

Master
14.02.2006, 12:22
Soniks Ну ты даешь вобще молоток!!! круто я в восторге!

а что с модулем новостей его будешь переделывать? ото он тоже прожорлевый!

kor
14.02.2006, 12:34
кстати наконец то сайт ваш начал грузиться быстро( оптимизацию в народ-----)

Soniks
14.02.2006, 14:31
kor оптимизировал сам, ни глядя не на какие коды конкурентов, поэтому и копирайт стоит.
кстати наконец то сайт ваш начал грузиться быстро с сайтом вообще ничего не делал, это видимо ваш провайдер.
Master будет продолжение, будет и оптимизация отдельных блоков и модулей php-nuke, не все сразу

kentbrn
14.02.2006, 17:31
если переделают модуль новостей будет просто офигенно!!!!

kor
14.02.2006, 18:54
kentbrn его уже давно переделали. у меня он делает 1 запрос.. и я об этом писал на форуме как и что надо сделать

kentbrn
14.02.2006, 19:34
у тебя один а у меня все 33 ! пипеццц!

kor
14.02.2006, 19:41
ну так ищи мои стать по оптимизации и изменяй

Sturla
14.02.2006, 22:29
Прокоментерию статью с моей точки зрения и так

Вот не понимаю зачем вот етот кусок кода в функции blocks

if ($view == 0) {
render_blocks($side, $value);
} elseif ($view == 1 AND is_user($user) || is_admin($admin)) {
render_blocks($side, $value);
} elseif ($view == 2 AND is_admin($admin)) {
render_blocks($side, $value);
} elseif ($view == 3 AND !is_user($user) || is_admin($admin)) {
render_blocks($side, $value);
}

если можно зделать так
if (is_admin($admin)) {
$view = "";
} elseif (is_user($user)) {
$view = "AND ((view = '0') OR (view = '1'))";
} else {
$view = "AND ((view = '0') OR (view = '3'))";
}
$result = $db->sql_query("SELECT bid, bkey, title, content, url, bposition, weight, blockfile, view, expire, action, subscription, refresh, time FROM ".$prefix."_blocks WHERE active='1' $view $querylang ORDER BY bposition, weight ASC");

И вместо етого куска кода
if ($view == 0) {
render_blocks($side, $value);
} elseif ($view == 1 AND is_user($user) || is_admin($admin)) {
render_blocks($side, $value);
} elseif ($view == 2 AND is_admin($admin)) {
render_blocks($side, $value);
} elseif ($view == 3 AND !is_user($user) || is_admin($admin)) {
render_blocks($side, $value);
}

оставим токо
render_blocks($side, $value);

Soniks
15.02.2006, 02:00
Sturla пожалуйста, можно и так, в моем случаи мы получаем выборку всех действующих блоков, что может нам понадобиться в будущем, тем более чем меньше параметров WHERE, тем быстрее произойдет выборка. Ваш предложенный метод тоже верен и не чуть не хуже :smile:

kentbrn
15.02.2006, 17:25
Народ вот сидел капался в модуле Новостей если удалить из файла index.php в function theindex
getTopics($s_sid); эту строку то кол-во запросов падает сразу на 25 штук однако
formatTimestamp($time);
вот и вся модернизация!

что еще можно придумать !?:)

Soniks
15.02.2006, 17:37
kentbrn
Народ вот сидел капался в модуле Новостей если удалить из файла index.php в function theindex
getTopics($s_sid); эту строку то кол-во запросов падает сразу на 25 штук однако
я же написал, что от этой функции избавимся, когда будем оптимизировать новости.
Подождите, все будет, что вы "раньше батьки в пекло лезете" :smile:

007
15.02.2006, 19:28
У меня произошла проблема при оптимизации сделал этот пункт

2. Изменим вызов конфиг файла и подключение к бд, находим:

и у меня перестал работать баннер...

И еще при оптимизации админки

Немного изменим блок администратора, но по-прежнему он будет производить 7 запросов к БД, такова цена информативности, тем более что это будет только для администратора и поэтому не столь значимо, находим:

Сайт вообще перестал работать ошибок не выводил потому что сайт вообще не генерировался... html пустой был...

У меня нюк 7,9 без патчей !

kentbrn
15.02.2006, 20:18
Немного изменим блок администратора, но по-прежнему он будет производить 7 запросов к БД, такова цена информативности, тем более что это будет только для администратора и поэтому не столь значимо, находим:

Сайт вообще перестал работать ошибок не выводил потому что сайт вообще не генерировался... html пустой был...
у меня такая же фигня но я вернул как и было раньше всеравно теже 7 запросов :))

007
15.02.2006, 22:12
........

http://gsm-news.ru/backend.php не могу понять как это исправить ?

Warning: fopen(NUKE_PATHcache/config): failed to open stream: No such file or directory in /home/orenburg/www/gsm-news.ru/html/mainfile.php on line 162

Warning: fwrite(): supplied argument is not a valid stream resource in /home/orenburg/www/gsm-news.ru/html/mainfile.php on line 163

Warning: fclose(): supplied argument is not a valid stream resource in /home/orenburg/www/gsm-news.ru/html/mainfile.php on line 164

Warning: fopen(NUKE_PATHcache/.htaccess): failed to open stream: No such file or directory in /home/orenburg/www/gsm-news.ru/html/mainfile.php on line 167

Warning: fwrite(): supplied argument is not a valid stream resource in /home/orenburg/www/gsm-news.ru/html/mainfile.php on line 168

Warning: fclose(): supplied argument is not a valid stream resource in /home/orenburg/www/gsm-news.ru/html/mainfile.php on line 169


Warning: themeheader(banners.php): failed to open stream: No such file or directory in /home/orenburg/www/gsm-news.ru/html/themes/gsm-news/theme.php on line 87

Warning: themeheader(): Failed opening 'banners.php' for inclusion (include_path='.:/home/orenburg/') in /home/orenburg/www/gsm-news.ru/html/themes/gsm-news/theme.php on line 87


???

Soniks
15.02.2006, 22:39
Сайт вообще перестал работать ошибок не выводил потому что сайт вообще не генерировался... html пустой был...
у меня такая же фигня но я вернул как и было раньше всеравно теже 7 запросов :))
видно же что не перенеслась строка в коде, когда я публиковал и стала комментарием, сейчас исправил.

Sturla
15.02.2006, 23:05
Sturla пожалуйста, можно и так, в моем случаи мы получаем выборку всех действующих блоков, что может нам понадобиться в будущем, тем более чем меньше параметров WHERE, тем быстрее произойдет выборка. Ваш предложенный метод тоже верен и не чуть не хуже :smile:
И не только выборка но и не выполняетса кучу раз функции is_admin и is_user они и так выполняютса немеряно раз

kentbrn
16.02.2006, 09:19
предлогаю оптимизировать блок последних сообщений с форума .. ну и что в нем есть ... а то 17 запросов енто много! вот он и сам .....

krotish
16.02.2006, 14:48
провел оптимизацию. всего 109 запросов. при этом выключил темы и группы. результатом не впечатлён. :(
дайте ещё советов, пожалуйста, как уменьшить кол-во запросов.

kentbrn
16.02.2006, 16:42
у меня оптимизировалось до 30 запросов!

kor
16.02.2006, 17:45
господа!!! если вы оптимизируете систему это незначит что у вас будет 8 запросов!!! смотрите что у вас установлено...

007
16.02.2006, 19:44
Начнем:

1. Проблема с модулем Рекламой Вот он http://phpnuke.ru/modules.php?name=Files&go=view_file&lid=728 он просто начинает косить страницу в хлам... не грузится вся страница вообщем... Отключил блок на главной все нормально стало захожу через админку выдает ошибку

Fatal error: Call to undefined function: sql_query() in /home/orenburg/www/gsm-news.ru/html/admin/modules/info-block.php on line 20

залез в код нашел вот это:

$result = sql_query( "select radminsuper from $prefix"._authors." where aid='$aid'", $dbi ); Какая тут ошибка ?

А до этого обнаружил то что блок не хочет работать после оптимизации этотго этапа:

Изменим вызов конфиг файла и подключение к бд, находим:

Че делать ? как быть ?

Soniks
16.02.2006, 20:09
если вы не используете модули или блоки от старых версий phpnuke, то удалите эти строчки, это позволит снизить нагрузку к БД читайте внимательнее, у вас как раз блок для старых версий phpnuke

krotish
16.02.2006, 20:20
а у меня перестали пахать новости.

007
16.02.2006, 20:27
$result = sql_query( "select radminsuper from $prefix"._authors." where aid='$aid'", $dbi );

Да я знаю что от старых версий...но как мне сделать чтобы она работала теперь после этого ?

Soniks
16.02.2006, 20:40
007 не удалять строчку, что здесь не понятного то, или переводите блок под новый класс подключения к бд, по анологии с http://www.slaed.net/index.php?name=News&file=article&sid=18

007
16.02.2006, 21:48
админка перестала грузиться решил зайти а она на половину загрузилась и все ... больше ничего не делатает.... че делать ? где моя ошибка может быть после оптимизации ?

Soniks
16.02.2006, 22:33
007 просто будьте внимательны! и все читайте что пишут в теме по оптимизации

И перестаньте создавать каждый раз новые темы, иначе получите предупреждение!

Kxu
17.02.2006, 14:12
Soniks , я тут тоже немного задумываюсь об оптимизации!!!! Меня интересует, вот создаем реляционные бд, все с виду хорошо, и......потом, создаю формы для ввода в бд, а там различные селек выбор, в котором все отображается благодаря именно этим реляционным бд, где все понятно...НО!!!!!!!!!!!!!!!! А тут вдруг много всего, и куча обращений к бд!!!!! и сайт может умереть, наверное, боюсь вот....Может у кого какие идей!!!! у меня мысль про строчки и массивы!!!! Как????

kentbrn
17.02.2006, 16:54
block-Sommaire.php просьба оптимизировать этот блок... 10 запросов ент многО!

Master
17.02.2006, 19:39
отключи там вывод новых личных сообщений и поиск нового в разделах сайта! и будет нормально около 3 запросов

Soniks
17.02.2006, 19:52
Kxu с конкретизируйте свой вопрос, а то вообще ничего не понятно

kentbrn
17.02.2006, 19:52
отключил 7 запросов стал

kentbrn
18.02.2006, 18:29
про оптимизацию новостей ! новости при нулевом выводей новстей на главной запросов идет 6 штук аж
при выводе 8 новостей 59 запросов, однако нада еще оптимизировать!

точнее 14... 59 эт вообщем на главной запросов

Soniks
18.02.2006, 19:07
kentbrn такое даже без оптимизации не может быть, видимо у вас эти запросы дает что то другое, а не модуль новостей или не стандартный модуль.

kentbrn
18.02.2006, 19:38
как не может быть ну во смотри беру открываю главную страницу на ней модуль новостей по умолчанию, всего 59 запросов при 8 новостях на главной, захажу в админку ставлю выводит новостей 0 штук на главной , затем на главной показывает 51 запрос,
дальше захожу в админку ставлю по умолчанию на главной модуль который не кушает запросы и смотрю . показывает 44 запроса ! итог модуль кушает при 8 новостях 8 запросов , при 0 новостей 7 запросов т.к. 51-44=7 штук!
Итог 59-44=15 запросов ... много!

Master
18.02.2006, 19:44
kentbrn У тебя просто наверное еще включен блок опроса на главной он тоже много хавает стандартный block-Survey

kentbrn
18.02.2006, 19:54
юдлкчто эт и как отключить!?

Kxu
20.02.2006, 12:04
Soniks ,так, реляционная база данных подразумевает несколько таблиц, связанных м\у собой , напримр, база всех магазинов, содерожит столбец район, а все районы храним в отдельной таблице! так вот, в форме селекторный список, обращаемся к таблице районов!!!! А если много посетителей, много обращений в каждый раз, может кто-нидь знает какую-нидь хитрость избежать всего такого множественного обращения к таблицам базы. Вот я знаю такое, что некоторые строки используют с разделителями ,например, районы перечисляют в виде одной строки в таблице, а затем образуют массив $cid="".$c1."|".$c2."|".$c3."";
$cidA = explode("|", $cid); А потом и работают с массивом, все проще, чем с таблицой связываться. Так, кто-нибудь делал??? Поделитесь опытом!!!

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
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! как сделать чтоб сново заработало!?
вот код:
$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 ну модуль опросов это отдельный разговор... он и был катаким карявым, что бы избавиться от сего нужно

найти:
$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;

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

найти:
$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;

заменить на:
$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'];

Найти:
echo "</td></tr>";
}
}
}

заменить на:
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
$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
Спасибо 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
Kilo не целиком оптимизировали mainfile.php, пропустили код в вызови функции adminblock($blockinfo) в функции blocks()


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

Soniks
17.04.2006, 03:16
Kilo попробуйте открыть IE на других машинах, возможно это глюк IE очень вероятно, так же попробуйте сбросить кеш браузера и cookies

Kilo
17.04.2006, 10:24
Да, Soniks, спасибо, браузер почистил, блок на главной стал отображаться!
Но я немного не заметил что ошибка все таки есть в админке->блоки->и когда здесь щелкаю просмотр блока, то он не отображается и вместо него эта ошибка: Warning: Missing argument 1 for adminblock() in /home/196021/http/mainfile.php on line 878

С кодом строки 878: $content = str_replace("admin.php",$admin_file.".php", $blockinfo['content']);

Kilo
18.04.2006, 13:58
И ещё пытаюсь оптимизировать модуль News, пока занимаюсь только index.php в этом модуле, и вот такая непонятка: после замены этого кода $result = $db->sql_query("SELECT sid, catid, aid, title, time, hometext, bodytext, comments, counter, topic, informant, notes, acomm, score, ratings FROM ".$prefix."_stories $qdb $querylang ORDER BY sid DESC limit $storynum");

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

Soniks
19.04.2006, 05:11
Kilo советую еще раз повнимательнее все проделать

Kilo
25.04.2006, 10:33
Еще замечен баг на Nuke 7.9 после оптимизации mainfile.php. Не выбирается тема! т.е. в свойствах выбираю другую тему, нажимаю сохранить изменения, и ничего не происходит... пробовал несколько тем, ни одна не применяется!

VLN
25.04.2006, 11:34
После оптимизации навигации,
http://forum.mynuke.ru/showpost.php?p=7494&postcount=10

в админке стали множится модули, как не зайдешь - всех по одному прибавилось :(

Soniks
25.04.2006, 22:42
VLN перепроверьте код, возможно, что то упустили, код тестился ничего подобного не найдено.

Zwezdochet
06.05.2006, 20:10
У меня такая проблема,возможно она уже здесь обсуждалась:
Во время оптимизации,после шага 2. (Изменим вызов конфиг файла и подключение к бд)
в галерее 4images 1.7.1 перестали работать ссылки,т.е. ссылки стали иметь вид http://123.ru/details&image_id=145&sessionid=a2fa56f40c1eff5486bfc7591e148104 вместо http://123.ru/modules.php?name=Gallery&file=details&image_id=145&sessionid=a2fa56f40c1eff5486bfc7591e148104. Как это можно исправить7

Alexfilus
07.05.2006, 12:53
в админке стали множится модули, как не зайдешь - всех по одному прибавилось :(
У меня было нечто подобное. Только всех модулей стало по шесть. Я зашёл в phpMyAdmin и поудалял из БД лишние записи.

Zwezdochet
07.05.2006, 21:10
У меня такая проблема,возможно она уже здесь обсуждалась:
Во время оптимизации,после шага 2. (Изменим вызов конфиг файла и подключение к бд)
в галерее 4images 1.7.1 перестали работать ссылки,т.е. ссылки стали иметь вид http://123.ru/details&image_id=145&sessionid=a2fa56f40c1eff5486bfc7591e148104 вместо http://123.ru/modules.php?name=Gallery&file=details&image_id=145&sessionid=a2fa56f40c1eff5486bfc7591e148104. Как это можно исправить7

Ну помогите пожалуйста

Soniks
15.05.2006, 11:00
Zwezdochet что бы заработала данная галерея нужно в коде оптимизации, где встречаеться NUKE_PATH заменить скажем на NUKE_PATH_M во всех файлах которые подвергалисьоптимизации и где такое встречаеться.

Samovar
06.06.2006, 00:28
А кто-нибудь пробовал оптимизировать модуль Downloads? У меня от 150 до 200 запросов к БД...
Еще спросить хотел, если удалить таблицы ненужных модулей (к примеру, таблицы форума, если он не используется), то нагрузка станет меньше?

Alexander-V-Sh
06.06.2006, 01:47
Samovar
Удалить базу стоит, чтобы мусора не было, но на нагрузку это не повлияет.
А про 150-200 запросов - саму нюку оптимизировал? статистика, рефералы?.
У меня после полной оптимизации (с этого сайта статьи) больше 30 не поднимается нигде.

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

Samovar
06.06.2006, 01:52
Samovar
Удалить базу стоит, чтобы мусора не было, но на нагрузку это не повлияет.
А про 150-200 запросов - саму нюку оптимизировал? статистика, рефералы?.
У меня после полной оптимизации (с этого сайта статьи) больше 30 не поднимается нигде.

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

Нюку оптимизировал, однако количество запросов колеблется от 60 до 200 в целом по всему сайту. К примеру, на главной - 68, модуль стоит news [его оптимизировать не удалось - получаю белый лист в результате]. А о каком Downloads идет речь? На mynuke ничего не нашел... киньте ссылку, пожалуйста

Alexander-V-Sh
06.06.2006, 02:26
Samovar
http://mynuke.ru/modules.php?name=Downloads&op=getit&lid=178
А нюка какая у тебя?.

Я оптимизировал только все из статей что тут. Больше 25-30 не поднимается нигде (кроме модуля Топикс), хотя 25-30 условно :) правые блоки как то не правильно считаются в запросах.


---------------------------------------------------------------------------
Вопрос такой - сыграет ли в оптимизации - замена использования БД на прямые ссылки.
Если, например, есть 5 разделов для файлов, в них еще 20 подразделов (а больше и не будет, а если и будет 1-2, то не сложно добавить в код).
Заменить функцию, и сделать прямые ссылки на разделы (простым кодом, без БД). Заодно и красотени можно навести (добавить картинки для них, расположить как тебе угодно, добавить ссылки какие нибудь и т.д.).

И по возможности везде так. Снизит ли это нагрузку или незаметно даже будет?.

Второй вариант, если cid=2 - это категория называется Юмор, можно напрямую написать и не спрашивать у БД. Код будет длиннее, больше всяких условий, функций, а толк будет?
А то может 5 функций и 10 условий нагрузку сделают больше чем 5 запросов в бд :)

Samovar
06.06.2006, 11:01
версия - 7.9
скачал этот модуль, теперь сайт вообще летает :) спасибо!

Alexander-V-Sh
06.06.2006, 12:14
Оптимизация Stories_Archive
Находим:
$result = $db->sql_query("SELECT sid, catid, title, time, comments, counter, topic, alanguage, score, ratings from ".$prefix."_stories WHERE time >= '$year-$month-01 00:00:00' AND time <= '$year-$month-31 23:59:59' order by sid DESC");
Заменяем на:
$result = $db->sql_query("SELECT s.*, c.title as title1 FROM ".$prefix."_stories AS s LEFT JOIN ".$prefix."_stories_cat AS c ON( c.catid=s.catid and s.catid>0) WHERE time >= '$year-$month-01 00:00:00' AND time <= '$year-$month-31 23:59:59' ORDER BY s.sid DESC");
Находим:
if ($catid == 0) {
$title = "<a href=\"modules.php?name=News&amp;file=article&amp;sid=$sid$r_options\">$title</a>";
} elseif ($catid != 0) {
$row_res = $db->sql_fetchrow($db->sql_query("SELECT title from ".$prefix."_stories_cat where catid='$catid'"));
$cat_title = filter($row_res['title'], "nohtml");
$title = "<a href=\"modules.php?name=News&amp;file=categories&amp;op=newindex&amp;catid=$catid\"><i>$cat_title</i></a>: <a href=\"modules.php?name=News&amp;file=article&amp;sid=$sid$r_options\">$title</a>";
}

Заменяем на:
if ($catid == 0) {
$title = "<a href=\"modules.php?name=News&amp;file=article&amp;sid=$sid$r_options\">$title</a>";
} elseif ($catid != 0) {
$cat_title = filter($row['title1'], "nohtml");
$title = "<a href=\"modules.php?name=News&amp;file=categories&amp;op=newindex&amp;catid=$catid\"><b>$cat_title</b></a>: <a href=\"modules.php?name=News&amp;file=article&amp;sid=$sid$r_options\">$title</a>";
}

Находим:
$result = $db->sql_query("SELECT sid, catid, title, time, comments, counter, topic, alanguage, score, ratings from ".$prefix."_stories order by sid DESC limit $min,$max");
$numrows = $db->sql_numrows($db->sql_query("select * from ".$prefix."_stories"));

Заменяем на:
$result = $db->sql_query("SELECT s.*, c.title as title1 FROM ".$prefix."_stories AS s LEFT JOIN ".$prefix."_stories_cat AS c ON( c.catid=s.catid and s.catid>0) ORDER BY s.sid DESC limit $min,$max");
Находим:
if ($catid == 0) {
$title = "<a href=\"modules.php?name=News&amp;file=article&amp;sid=$sid$r_options\">$title</a>";
} elseif ($catid != 0) {
$row_res = $db->sql_fetchrow($db->sql_query("SELECT title from ".$prefix."_stories_cat where catid='$catid'"));
$cat_title = filter($row_res['title'], "nohtml");
$title = "<a href=\"modules.php?name=News&amp;file=categories&amp;op=newindex&amp;catid=$catid\"><i>$cat_title</i></a>: <a href=\"modules.php?name=News&amp;file=article&amp;sid=$sid$r_options\">$title</a>";
}

Заменяем на:
if ($catid == 0) {
$title = "<a href=\"modules.php?name=News&amp;file=article&amp;sid=$sid$r_options\">$title</a>";
} elseif ($catid != 0) {
$cat_title = filter($row['title1'], "nohtml");
$title = "<a href=\"modules.php?name=News&amp;file=categories&amp;op=newindex&amp;catid=$catid\"><b>$cat_title</b></a>: <a href=\"modules.php?name=News&amp;file=article&amp;sid=$sid$r_options\">$title</a>";
}


Вроде все тут. Делал по аналогии с оптимизацией новостей. У меня работает все.

Вопрос - зачем нужен код?
if(is_user($user)) {
getusrinfo($user);
if (!isset($mode) OR empty($mode)) {
if(isset($userinfo['umode'])) {
$mode = $userinfo['umode'];
} else {
$mode = "thread";
}
}
if (!isset($order) OR empty($order)) {
if(isset($userinfo['uorder'])) {
$order = $userinfo['uorder'];
} else {
$order = 0;
}
}
if (!isset($thold) OR empty($thold)) {
if(isset($userinfo['thold'])) {
$thold = $userinfo['thold'];
} else {
$thold = 0;
}
}
}
Причем тут пользователь в архиве статей? Если код удалить - разницы не заметил никакой.

Оптимизация модуля Ecyclopedia
Тут ничего впринципе не делал, просто изменил запрос в БД для алфавита. Убрал проверку на наличие терминов на каждую букву. (раньше ссылка на букве была не активной, если нет таких терминов, сейчас все ссылки активны).
Находим функцию: function alpha($eid)
И меняем ее полностью на:

function alpha($eid) {
global $module_name, $prefix, $db;
echo "<center>Выберите букву для получения терминов:</center><br>";

$alphabet = array ("А","Б","В","Г","Д","Е","Ж","З","И","К","Л","М","Н",
"О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Э","Ю","Я");
$num = count($alphabet) - 1;
echo "<center>-";
$counter = 0;
$eid = intval($eid);
while (list(, $ltr) = each($alphabet)) {
$ltr = substr("$ltr", 0,1);
echo "<a href=\"modules.php?name=$module_name&amp;op=terms&amp;eid=$eid&amp;ltr=$ltr\"><b>$ltr</b></a>";

echo "-";

$counter++;
}
echo "</center>\n\n\n";
echo "<br>";
encysearch($eid);

}
Стало меньше на 28 запросов.

Samovar
06.06.2006, 13:01
а я теперь не могу править блоки почему-то... в чем может быть ошибка?

Alexander-V-Sh
06.06.2006, 13:03
Samovar
Всмысле не можешь править? После того как новый модуль Downloads поставил?

Samovar
06.06.2006, 17:21
Samovar
Всмысле не можешь править? После того как новый модуль Downloads поставил?
Не, после оптимизации! Один блок правится, другой нет почему-то... новый создам, т.к. проблема только в этом блоке, остальные все ОК

Alexander-V-Sh
06.06.2006, 17:50
Samovar
Опять не понял :) если после моей оптимизации (что я писал) то причем тут блоки? Там они вроде никак не затрагиваются. И непонятно как один правится, а другой нет - что именно правится в них?

Soniks
06.06.2006, 18:12
Alexander-V-Sh Причем тут пользователь в архиве статей? Если код удалить - разницы не заметил никакой.
этот код отвечает за настройку вывода новостей пользователем, мало используемая функция

Samovar
06.06.2006, 19:08
У меня опять проблема... теперь не могу зайти в админ-панель модулей, причем любых, при поптыке получаю Access Denied...

Заменил mainfile.php на стандартный, в админку модулей теперь зайти могу, НО этот файл не оптимизирован, а значит слишком много запросов + получаю такую (http://myzuka.ru/files/111.jpg) ерунду... при каждом обновлении эти значки увеличиваются на один от каждого модуля! В чем может быть загвостка?

Soniks
02.07.2006, 15:05
Samovar внимательнее вносите изменения в код!

Alexander-V-Sh
20.07.2006, 17:54
вопрос про главную страничку. на ней на 3 запроса больше, чем на модуле (который открывается на главной).

1 запрос понятно - запрос в свойсва, чтобы узнать какой модуль отображать на главной.
а еще 2 откуда? и как их убрать :)

оптимизация вся сделана (из статей в этом разделе).

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

Soniks
20.07.2006, 18:13
Alexander-V-Sh запрос может быть от рефералов и повторного вызова mainfile.php уже в самом модуле,чтоб такого не было лучше всего писать не include или require, а inclide_once или require_once, т.е. require_once("mainfile.php");
возможно сам модуль делает дополнительный запрос когда вызывается на главной странице.

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

Alexander-V-Sh
21.07.2006, 02:17
Везде стоит require_once("mainfile.php");
Разные модули пробывал на главной, даже свой (без БД). Удалял оттуда require_once("mainfile.php"); - тоже самое, на 3 запроса на главной больше.

В индексе 2 запроса в БД, но они не используются. (первый для рекламы - удалял тоже самое все).
второй для проверки что на главной. (но он берется из кеша).

Потом еще проверки на $themesel и все.

Рефералов тоже нет, удалил вместе со статистикой.
(сайт локально)

1 запрос точно нашел :) это сообщения на главной
:--------
Он же проверяя подписчиков еще.
В общем разобрался вроде откуда тут все.

Yeti
23.07.2006, 00:53
нужна оптимизация нюки. отклик сайта составляет 6 секунд, что не есть хорошо. пробовал поддомен - меньше секунды.

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

народ, помогите оптимизировать нюку 7,9 3,2,20

Soniks
25.07.2006, 03:29
Yeti ну эта версия нюки уже отчасти облегчена запросами, поэтому можно и не оптимизировать иначе нужно разбиратся в php

Yeti
25.07.2006, 15:27
Спасибо огромное, а то я и смотрю, что код оптимизирован, хотя не очень понимаю php.

Jay
30.07.2006, 22:52
php-nuke 7.6+2.9

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

--------------------------------------------------------------------------------------------
- 2. Изменим вызов конфиг файла и подключение к бд, находим:
--------------------------------------------------------------------------------------------

После этого обновления блок "Новое на форуме" перестал получать информацию. Это - достаточно популярный блок block-Rus_Center.php, немного модернизированный. Попробовал другие аналогичные блоки - результат тот же. А точнее, отсутствие оного.

--------------------------------------------------------------------------------------------
- 7. Обновим функцию проверки на активность модуля и функции, работающие с блоками, находим:
--------------------------------------------------------------------------------------------

Вот здесь начались главные мои проблемы и ярешил заморозить оптимизацию, узнав о причинах проблем. Во-первых, хочу уточнить еще раз, что используется версия 7.6, т.е. функция filter() не должна быть - внимательно ручками убирал ее. Но не сразу, сначала слепо скопировал и получил только загружаемую шапку сайта :). Исправил. После этого получаю: Открытие страницы: 15.7 секунды. Пробовал на разных браузерах - результат все тот же - мега плачевный.

P.S. Естесственно, оптимизирую и тестирую на локалке.

Jay
01.08.2006, 19:44
Soniks, ну помогите советом, пожалуйста :) Или пошлите куда подальше меня с моей 7.6 и нефига тут оптимизировать :)

Soniks
01.08.2006, 19:51
Jay возможно вы убрали старый метод подключения к бд, которое и использует этот блок, если у вас не получается убрать правильно функцию filter()? то попробуйте ее добавить из 7.9 версии

Jay
01.08.2006, 21:13
Soniks, может и правда неправильно убираю?

У Вас указано так:
$bkey = filter($row['bkey'], nohtml);
$title = filter($row['title'], nohtml);

Я преобразую:
$bkey = $row['bkey'];
$title = $row['title'];

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

И с модулем "News" что-то не получилось оптимизировать - после ряда изменений News на главной страницы вообще отказывается показываться. Видимо, версия нюки старовата...

Soniks
09.08.2006, 01:19
Jay изменяете то правильно, но видимо все-таки отличия какие-то есть или ошибку допускаете в синтаксисе php, включайте вывод ошибок на экран и смотрите, так же стоит обратить внимание на отличие запросов к бд, они тоже могут отличатся, по выводимым столбцам.

gongalo
03.09.2006, 13:01
У меня проблемы с phpnuke 7.9-3.2 - я заметил, что в ней код немного отличается от того, что описан в этом способе оптимизации. Я все проделал как описано, но после этого, браузер выдает ошибку, типа "страница не найдена, браузер обнаружил, что сервер перенаправляет на страницу, адрес которой никогда не заканчивается" - что-то типа этого. пробовал таким способом оптимизит shkurki2 - там работает. - результат ЗНАЧИТЕЛЬНЫЙ! Кол-во запросов уменшается от 300 - до 90, - но это тоже много

Soniks
05.09.2006, 00:18
gongalo делайте пошагово, если страница переадресовывается значит ошиблись в вызове функции Header("Location: .....");

whitepanther
04.11.2006, 03:37
Провел оптимизацию по инструкции, но есть проблемы:

В 7-м шаге требуется заменить три функции. Меняю и сайт, такое ощущение, входит в бесконечный цикл. Пробовал менять эти функции по-очереди, первая заменяется без проблем и сайт не выдает ошибок, на второй выдает ошибку такого рода:

Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/mainfile.php on line 1064

Warning: fsockopen(): unable to connect to :80 in /home/mainfile.php on line 1064

На этой строке находится вот это:
$fp = fsockopen($rdf['host'], 80, $errno, $errstr, 15);

А при замене на третью сайт начинает грузиться бесконечно.

Изначально заменяемая часть выглядит вот так:
function is_active($module) {
global $prefix, $db;
static $save;
if (is_array($save)) {
if (isset($save[$module])) return ($save[$module]);
return 0;
}
$sql = "SELECT title FROM ".$prefix."_modules WHERE active=1";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {
$save[$row[0]] = 1;
}
$db->sql_freeresult($result);
if (isset($save[$module])) return ($save[$module]);
return 0;
}

function render_blocks($side, $blockfile, $title, $content, $bid, $url) {
if(!defined('BLOCK_FILE')) {
define('BLOCK_FILE', true);
}
if (empty($url)) {
if (empty($blockfile)) {
if ($side == "c") {
themecenterbox($title, $content);
} elseif ($side == "d") {
themecenterbox($title, $content);
} else {
themesidebox($title, $content);
}
} else {
if ($side == "c") {
blockfileinc($title, $blockfile, 1);
} elseif ($side == "d") {
blockfileinc($title, $blockfile, 1);
} else {
blockfileinc($title, $blockfile);
}
}
} else {
if ($side == "c" OR $side == "d") {
headlines($bid,1);
} else {
headlines($bid);
}
}
}

function blocks($side) {
global $storynum, $prefix, $multilingual, $currentlang, $db, $admin, $user;
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;
$sql = "SELECT bid, bkey, title, content, url, blockfile, view, expire, action, subscription FROM ".$prefix."_blocks WHERE bposition='$pos' AND active='1' $querylang ORDER BY weight ASC";
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result)) {
$bid = intval($row['bid']);
$title = filter($row['title'], "nohtml");
$content = $row['content'];
$url = filter($row['url'], "nohtml");
$blockfile = filter($row['blockfile'], "nohtml");
$view = intval($row['view']);
$expire = intval($row['expire']);
$action = filter($row['action'], "nohtml");
$action = substr($action, 0,1);
$now = time();
$sub = intval($row['subscription']);
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 ($row['bkey'] == "admin") {
adminblock();
} elseif ($row['bkey'] == "userbox") {
userblock();
} elseif (empty($row['bkey'])) {
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);
}
}
}
}
$db->sql_freeresult($result);
}

Версия Нюки: 7.9.0_3.2_20 Rus

whitepanther
06.11.2006, 02:45
Нашел решение этой проблемы!
Уважаемому gongalo вероятно поможет.

В 7-м шаге меняются 3 функции.
Так вот...

Вместо
function render_blocks($side, $blockinfo) {
if ($blockinfo['url'] == "") {
if ($blockinfo['blockfile'] == "") {
if ($side == "c") {
themecenterbox($blockinfo['title'], $blockinfo['content']);
} elseif ($side == "d") {
themecenterbox($blockinfo['title'], $blockinfo['content']);
} else {
themesidebox($blockinfo['title'], $blockinfo['content']);
}
} else {
if ($side == "c") {
blockfileinc($blockinfo['title'], $blockinfo['blockfile'], 1);
} elseif ($side == "d") {
blockfileinc($blockinfo['title'], $blockinfo['blockfile'], 1);
} else {
blockfileinc($blockinfo['title'], $blockinfo['blockfile']);
}
}
} else {
if ($side == "c" OR $side == "d") {
headlines($blockinfo,1);
} else {
headlines($blockinfo);
}
}
}

Заменяем на
function render_blocks($side, $blockinfo) {
if(!defined('BLOCK_FILE')) {
define('BLOCK_FILE', true);
}
if ($blockinfo['url'] == "") {
if ($blockinfo['blockfile'] == "") {
if ($side == "c") {
themecenterbox($blockinfo['title'], $blockinfo['content']);
} elseif ($side == "d") {
themecenterbox($blockinfo['title'], $blockinfo['content']);
} else {
themesidebox($blockinfo['title'], $blockinfo['content']);
}
} else {
if ($side == "c") {
blockfileinc($blockinfo['title'], $blockinfo['blockfile'], 1);
} elseif ($side == "d") {
blockfileinc($blockinfo['title'], $blockinfo['blockfile'], 1);
} else {
blockfileinc($blockinfo['title'], $blockinfo['blockfile']);
}
}
} else {
if ($side == "c" OR $side == "d") {
headlines($blockinfo,1);
} else {
headlines($blockinfo);
}
}
}

Соникс верно указал, что проблема с Header("Location: .....");, но эта трабла возникает с блоками, у которых код начинается с

if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
die();
}

typus
08.11.2006, 18:39
Здравствуйте все.
Проделал на локалке оптимизацию,версия Нюки-последняя Шкурки2,все строго по пунктам,везде значительный результат,но пара косяков все-таки возникла.
1)В эту версию встроена NukeSentinel™ 2.4.2,так вот ее не видно не откуда - ни с админ панели, ни с блока админа.Кто-нибудь сталкивался с этим?
Есть еще пара косяков, но с ними в принципе можно было бы жить
2)У кого-то уже было тут,что-то похожее,блок админа отображается как ему хочется.Т.е. захожу в mysite/admin/php - админ-панель есть - слева блока админа - нет.Нажму, например, на ссылки - появляется,еще куда-то - исчезает снова.Нажму в блоке юзера на ваш аккаунт - появляется,на другие модули в блоке юзера - исчезает.Хотя,может, так и было задумано
3)У меня на главной вместо ньюс установлен модуль последних новостей, ну вроде того, как на шкурках или PHP-Nuke по-русски,даже не помню,у кого скачал из них,там выводятся 3 последние новости и остальные внизу списком,только заглавия.У меня после оптимизации не видно названия - "Последние новости" и не отображаются картинки новостей.
Вот на первый взгляд такие траблы,может еще что-то вылезет, пока не знаю, буду наблюдать.
Просьба,если у кого-то что -то такое было и было решаемо - подскажите,битте,а то оптимизировать так и так надо - на главной 383 запроса.
Спасибо

typus
09.11.2006, 01:47
еще раз,добрый вечер вам всем.
попробовал переделать все,как тут кто-то предлагал, по шагам,в принципе,разобрался,где глюки,не понял пока только,как поправить.
п.1) и п.2)появляются как косяки после выполнения шага 2
2. Изменим вызов конфиг файла и подключение к бд, находим:
Собственно,понятно,в этой версии кусок кода,который предлагается оптимизировать,выглядит так:if (defined('FORUM_ADMIN')) {
require_once("../../../config.php");
require_once("../../../db/db.php");
@include_once("../../../includes/nukesentinel.php");
} elseif (defined('INSIDE_MOD')) {
require_once("../../config.php");
require_once("../../db/db.php");
@include_once("../../../includes/nukesentinel.php");
} else {
require_once("config.php");
require_once("db/db.php");
@include_once("includes/nukesentinel.php");
// FOLLOWING TWO LINES ARE DEPRECATED BUT ARE HERE FOR OLD MODULES COMPATIBILITY
//PLEASE START USING THE NEW SQL ABSTRACTION LAYER. SEE MODULES DOC FOR DETAILS
require_once("includes/sql_layer.php");
$dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);
Т.е.я пока не вкурил, куда надо воткнуть эту строку - @include_once("../../includes/nukesentinel.php");
Кто-то же уже делал эту операцию с версией от шкурок,вроде успешно?Подскажите,если несложно,буду признателен.
По п.3)глюк начинается после Откорректируем index.php, находим: -где тут копать - вообще ума не приложу.
В принципе,все бы ничего,но я заметил,что эти два шага убирают огромное число запросов,сейчас у меня на главной осталось 165(было 383),вроде сильно уменьшилось, и без глюков, но вот когда проделываю эти два пункта - остается меньше ста!Но вышеописанные глюки.Хотелось бы,конечно,уменьшить,ясно,что надо тот модуль последних новостей, что на главной вместо news оптимизировать - если кому есть что сказать - буду благодарен

whitepanther
11.11.2006, 03:23
if (defined('FORUM_ADMIN')) {
define('NUKE_PATH', '../../../');
} elseif (defined('INSIDE_MOD')) {
define('NUKE_PATH', '../../');
} else {
define('NUKE_PATH', './');

/* FOLLOWING TWO LINES ARE DEPRECATED BUT ARE HERE FOR OLD MODULES COMPATIBILITY */
/* PLEASE START USING THE NEW SQL ABSTRACTION LAYER. SEE MODULES DOC FOR DETAILS */
require_once("includes/sql_layer.php");
$dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);
}
require_once(NUKE_PATH."config.php");
require_once(NUKE_PATH."db/db.php");
@require_once(NUKE_PATH."includes/nukesentinel.php");


Причем строчки

/* FOLLOWING TWO LINES ARE DEPRECATED BUT ARE HERE FOR OLD MODULES COMPATIBILITY */
/* PLEASE START USING THE NEW SQL ABSTRACTION LAYER. SEE MODULES DOC FOR DETAILS */
require_once("includes/sql_layer.php");
$dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);
желательно удалить, но быть готовым к тому, что могут появиться проблемы у старых модулей или блоков, которые используют другой тип подключения к БД.

typus
11.11.2006, 12:46
спасибо, так и получается,при удалении этих строк пропадает не только один блок, но и вообще вся нижняя часть страницы,вместе с копирайтами и счетчиком обращений к базе.
а если из не удалять - нет никакого смысла менять код - число обращений к базе на главной не меняется.ну ладно.

whitepanther
12.11.2006, 18:18
ну это может происходить и из-за одного блока, когда вся страница просто съезжает...
включите вывод ошибок и посмотрите в каком блоке ошибка возникает. а далее - просто измените в нем тип подключения к бд...

typus
13.11.2006, 16:49
Спасибо,не могу пока все-таки догнать,образование хромает.
Вот этот блок, он у меня стоит на главной внизу,выводит последние сообщения с форума , последние файлы,ссылки и юзеры.
<?php
if( eregi( "block-Rus_Center.php",$PHP_SELF ) )
{
Header("Location: index.php");
die();
}

global $prefix, $dbi, $sitename, $bgcolor1, $bgcolor2;

$HideViewReadOnly = 1;

$Last_New_Topics = 10;

$IconPath = "images/icon_mini_message.gif";

$border = 1;
$cellspacing = 1;


$result = sql_query( "SELECT * FROM ".$prefix."_bbtopics", $dbi );
$Amount_Of_Topics = sql_num_rows( $result );


$result = sql_query( "SELECT * FROM ".$prefix."_bbposts", $dbi );
$Amount_Of_Posts = sql_num_rows( $result );


$Amount_Of_Topic_Views = 0;
$result = sql_query( "SELECT topic_views FROM ".$prefix."_bbtopics", $dbi );
while( list( $topic_views ) = sql_fetch_row( $result, $dbi ) )
{
$Amount_Of_Topic_Views = $Amount_Of_Topic_Views + $topic_views;
}

$Amount_Of_Topic_Replies = 0;
$result = sql_query( "SELECT topic_replies FROM ".$prefix."_bbtopics", $dbi );
while( list( $topic_replies ) = sql_fetch_row( $result, $dbi ) )
{
$Amount_Of_Topic_Replies = $Amount_Of_Topic_Replies + $topic_replies;
}


$result = sql_query( "SELECT * FROM ".$prefix."_users", $dbi );
$Amount_Of_Members = sql_num_rows( $result );

$Count_Topics = 0;
$Topic_Buffer = "";
$result1 = sql_query( "SELECT topic_id, forum_id, topic_last_post_id, topic_title, topic_poster, topic_views, topic_replies, topic_moved_id FROM ".$prefix."_bbtopics ORDER BY topic_last_post_id DESC", $dbi );
while( list( $topic_id, $forum_id, $topic_last_post_id, $topic_title, $topic_poster, $topic_views, $topic_replies, $topic_moved_id ) = sql_fetch_row( $result1, $dbi ) )
{
$skip_display = 0;
if( $HideViewReadOnly == 1 )
{
$result5 = sql_query( "SELECT auth_view, auth_read FROM ".$prefix."_bbforums where forum_id = '$forum_id'", $dbi );
list( $auth_view, $auth_read ) = sql_fetch_row( $result5, $dbi );
if( ( $auth_view != 0 ) or ( $auth_read != 0 ) ) { $skip_display = 1; }
}

if( $topic_moved_id != 0 )
{
// Shadow Topic !!
$skip_display = 1;
}

if( $skip_display == 0 )
{
$Count_Topics += 1;
$result2 = sql_query( "SELECT topic_id, poster_id, FROM_UNIXTIME( post_time,'%d/%m/%Y') as post_time FROM ".$prefix."_bbposts where post_id = '$topic_last_post_id'", $dbi );
list( $topic_id, $poster_id, $post_time ) = sql_fetch_row( $result2, $dbi );

$result3 = sql_query( "SELECT username, user_id FROM ".$prefix."_users where user_id='$poster_id'", $dbi );
list( $username, $user_id ) = sql_fetch_row( $result3, $dbi );
$LastPoster = "<A class=block2 HREF=\"modules.php?name=Forums&file=profile&mode=viewprofile&u=$user_id\"STYLE=\"text-decoration: none\"> $username </a>";

$result4 = sql_query( "SELECT username, user_id FROM ".$prefix."_users where user_id='$topic_poster'", $dbi );
list( $username, $user_id ) = sql_fetch_row( $result4, $dbi );
$OrigPoster = "<A class=block2 HREF=\"modules.php?name=Forums&file=profile&mode=viewprofile&u=$user_id\"STYLE=\"text-decoration: none\"> $username </a>";


$TopicTitleShow = "<a CLASS=block2 href=\"modules.php?name=Forums&amp;file=viewtopic&amp;p=$topic_last_post_id#$topic_last_post_id\"STYLE=\"text-decoration: none\">$topic_title</a>";

$Topic_Buffer .= "<tr><td bgcolor=\"$bgcolor1\">&nbsp;$TopicTitleShow</td><td bgcolor=\"$bgcolor1\"><div align=\"center\"><font class=block>$OrigPoster</font></div></td><td bgcolor=\"$bgcolor1\"><div align=\"center\"><font class=block><b>$topic_views</b></font></div></td><td bgcolor=\"$bgcolor1\"><div align=\"center\"><font class=block><b>$topic_replies</b></font></div></td><td align=\"center\" bgcolor=\"$bgcolor1\"><font class=block>$LastPoster $post_time</font></td></tr>";
}

if( $Last_New_Topics == $Count_Topics ) { break 1; }

}

$content = "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\"bgcolor=\"$bgcolor2\">";
$content .= "<tr><td width=\"100%\" height=\"18\" colspan=\"5\" align=\"center\" bgcolor=\"ff9900\"><font class=block><b>Последние сообщения на форуме</b></font></td></tr>";
$content .= "<tr><td align=\"center\" bgcolor=\"#eeeee4\" height=\"18\"><font class=block><b>Последние темы</b></font></td><td align=\"center\" bgcolor=\"#eeeee4\"><font class=block><b>Открыл</b></font></td><td align=\"center\" bgcolor=\"#eeeee4\"><font class=block><b>Просмотров</b></font></td><td align=\"center\" bgcolor=\"#eeeee4\"><font class=block><b>Ответов</b></font></td><td align=\"center\" bgcolor=\"#eeeee4\"><font class=block><b>Последний</b></font></td></tr>";
$content .= "$Topic_Buffer";

$content .= "</table><br>";

$strip = "20"; // how many characters to show
$viewdot = "<img src=\"images/link.gif\" border=\"0\" alt=\"\">&nbsp;&nbsp;";
$viewdot2 = "<img src=\"images/down.gif\" border=\"0\" alt=\"\">&nbsp;&nbsp;";
$viewdot3 = "<img src=\"images/user.gif\" border=\"0\" alt=\"\">&nbsp;";

$content .="<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\"bgcolor=\"$bgcolor2\">";
$content .= "<tr><td width=\"33%\" height=\"18\" align=\"center\" bgcolor=\"ff9900\"><font class=block><b>Новые ссылки</b></font></td>";
$content .= "<td width=\"34%\" height=\"18\" align=\"center\" bgcolor=\"ff9900\"><font class=block><b>Новые файлы</b></font></td>";
$content .= "<td width=\"33%\" height=\"18\" align=\"center\" bgcolor=\"ff9900\"><font class=block><b>Наши пользователи</b></font></td>";
$content .="</tr>";
$content .="<tr>";


$content .="<td valign=\"top\" bgcolor=\"$bgcolor1\">";
$result = sql_query("select lid, title from $prefix"._links_links." order by lid DESC limit 0,4", $dbi);
while(list($lid, $title) = sql_fetch_row($result, $dbi)) {
$linkstrip4 = stripslashes($title);
if(strlen($linkstrip4) > $strip) {
$linkstrip4 = substr($linkstrip4, 0, $strip);
$linkstrip4 .= "...";
}
$content .= "$viewdot<a CLASS=block2 href=\"modules.php?name=Web_Links&amp;l_op=viewlinkdetails&amp;lid=$lid&amp;title=$title\" STYLE=\"text-decoration: none\">$linkstrip4</a><br>";
}
$result=sql_query("select * from $prefix"._links_links."", $dbi);
$numrowsl = sql_num_rows($result, $dbi);
$content .= "<hr size=\"1\" color=\"#C0C0C0\" width=\"99%\">$viewdot <font class=block>Всего: <b> $numrowsl</b></font>\n";
$content .="</td>";


$content .="<td valign=\"top\" bgcolor=\"#FFFFFF\">";
$dbi);
$result = sql_query("select cid, lid, title from $prefix"._files." order by lid DESC limit 0,4", $dbi);
while(list($cid, $lid, $title) = sql_fetch_row($result, $dbi)) {
$linkstrip5 = stripslashes($title);
if(strlen($linkstrip5) > $strip) {
$linkstrip5 = substr($linkstrip5,0,$strip);
$linkstrip5 .= "...";
}
$content .= "$viewdot2<a CLASS=block2 href=\"modules.php?name=files&amp;d_op=viewdownloaddetails&amp;lid=$lid&amp;title=$title\" STYLE=\"text-decoration: none\">$linkstrip5</a><br>";

}
$result=sql_query("select * from $prefix"._files."", $dbi);
$numrowsf = sql_num_rows($result, $dbi);
$content .= "<hr size=\"1\" width=\"99%\">$viewdot2 <font class=block>Всего: <b> $numrowsf</b></font>\n";
$content .="</td>";


$content .="<td valign=\"top\" bgcolor=\"$bgcolor1\">";


global $user, $cookie, $prefix, $user_prefix, $db, $anonymous;

cookiedecode($user);
$uname = $cookie[1];

$sql = "SELECT username, user_id FROM $user_prefix"._users." ORDER BY user_id DESC LIMIT 0,1";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$lastuser = $row[username];
$iduser = $row[user_id];
$numrows = $db->sql_numrows($db->sql_query("SELECT user_id FROM $user_prefix"._users.""));


$Today = getdate();

$month = $Today['month'];
$mday = $Today['mday'];
$year = $Today['year'];

$pmonth = $Today['month'];
$pmday = $Today['mday'];
$pmday = $mday-1;
$pyear = $Today['year'];

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);


$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."%";


$sql = "SELECT COUNT(user_id) AS userCount FROM $user_prefix"._users." WHERE user_regdate LIKE '$curDate2'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$userCount = $row[userCount];



$sql = "SELECT COUNT(user_id) AS userCount FROM $user_prefix"._users." WHERE user_regdate LIKE '$curDateP'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$userCount2 = $row[userCount];


$content .= "$viewdot3 <font class=block>Зарегистрировались:<br>\n";
$content .= "$viewdot3 Последний: <A HREF=\"modules.php?name=Forums&file=profile&mode=viewprofile&u=$iduser\"><b>$lastuser</b></a><br>\n";
$content .= "$viewdot3 Сегодня: <b>$userCount</b><br>\n";
$content .= "$viewdot3 Вчера: <b>$userCount2</b><br>\n";
$content .= "<hr size=\"1\" width=\"99%\">$viewdot3 Всего: <b> $numrows</b>\n";

$content .="</td></tr></table>";

?>

Во-первых,понимаю,что сам этот блок - block-Rus_Center- надо бы оптимизировать,да,вот видел тут же,в этой теме на 2 странице этой темы - http://forum.mynuke.ru/showthread.php?t=1273&page=2&pp=10
вот этот block-alls - очень близкий,вот он представлен тут уже оптимизированный или еще нет?Я не пойму, с одной стороны,у меня,если я свой нижний блок просто на этот меняю,на 32 запроса меньше становится,но мне мой block-Rus_Center больше нравится.Ну если block-alls уже оптимизированный,я как - нибудь по аналогии может и сделаю,или подскажет тот,кто его делал,если не очень затруднит.
Во-вторых,что касается постов выше,именно этот блок и не виден,если провести изменения по совету whitepanther,стало быть там в нем и надо изменять тип подключения к базе?Если кто видит это,ткните носом,а то ну не вижу...
И еще момент,о чем писал выше,на главной у меня вот этот блок,последние новости,вместо новостей,как на шкурках или PHP-Nuke по-русски.
<?php
//Проверка запрета прямого обращения к файлу модуля
if (!defined('MODULE_FILE')) {
die ("You can't access this file directly...");
}
//Определим глобальные переменные для работы с базой
global $db, $prefix;
//Инклюдим файл mainfile.php
require_once("mainfile.php");
//Определяем переменную, содержащую имя модуля, ее можно использовать для построения внутренних ссылок
$module_name = basename(dirname(__FILE__));
//Определяем языковые данные
get_lang($module_name);
//Переменная $index = 1 определяет наличие правых блоков, без нее их не будет.
define('INDEX_FILE', true);
//Вставляем шапку сайта и открываем таблицу для вывода данных.
include("header.php");
OpenTable();
//Ниже будет содержание вашего модуля
//Значения _HOME_TITLE, _HOME_COMENT, _HOME_COMENT2, _HOME_VIEW, _HOME_VIEW2 определяются в файле lang-russian.php
echo "<center><h3>"._HOME_TITLE."</h3></center><br>";
echo "<table>";
$a=0;
//Читаем из базы 15 последних статей.
$result4 = $db->sql_query("SELECT sid, title, UNIX_TIMESTAMP(time) as formatted, hometext, comments, counter FROM ".$prefix."_stories ORDER BY sid DESC LIMIT 0,15");
while ($row4 = $db->sql_fetchrow($result4)) {
$s_id = intval($row4['sid']);
$title_s = $row4['title'];
$text_s = $row4[hometext];
$s_data = date("d.m.Y", $row4["formatted"]);
if($a <= 2) {
//Первые три статьи выводим в расширенном режиме.
echo "<tr><td width=\"100%\" colspan=6>
<br><img border=\"0\" src=\"themes/RusNuke2003/images/topics/phpnuke.gif\"width=\"24\" height=\"24\"> $s_data
<a class=storytitle href=\"modules.php?name=News&file=article&sid=$s_id\">$title_s</a><br>$text_s";
echo "<br><font color=\"#003063\"><b>"._HOME_COMENT." </b></font>(".$row4[comments].")<font color=\"#003063\">
<b> "._HOME_VIEW." </b></font>(".$row4[counter].")";
echo "</td></tr><tr><td colspan=6><hr></td></tr>";
} else {
//Остальные статьи выводим в сроку ссылкой.
echo "<tr><td><img border=\"0\" src=\"themes/RusNuke2003/images/topics/phpnuke.gif\" width=\"24\" height=\"24\"> $s_data</td>
<td width=\"70%\"><a class=noline href=\"modules.php?name=News&file=article&sid=$s_id\">$title_s</a></td>
<td><font color=\"#003063\"><b>"._HOME_COMENT2."</b></font></td><td>(".$row4[comments].")</td>
<td><font color=\"#003063\"><b>"._HOME_VIEW2."</b></font></td><td>(".$row4[counter].")</td></tr>";
}
$a++;
}
echo "</table>";
//Закрываем таблицу и вставляем нижнюю часть сайта.
CloseTable();
include("footer.php");
?>
Модуль неоптимизирован,если вместо него включаю снова новости - запросов существенно меньше.Просил на обоих тех форумах, ну не может быть,чтобы этот модуль никто не оптимизировал,он там у них обоих на главной стоит,и видно,сколько у них запросов.Но там пока никто не отозвался, может,позже откликнутся,или тут кто это делал уже,по времени у меня большого напряга нет, а по сути делать надо.
Заранее всем спасибо.

whitepanther
13.11.2006, 20:33
Спасибо,не могу пока все-таки догнать,образование хромает.
Вот этот блок, он у меня стоит на главной внизу,выводит последние сообщения с форума , последние файлы,ссылки и юзеры.

Есть небольшая проблема... В форуме стоит ограничение на длину слова... Поэтому код изначально "битый"...
Работать будет, но некоторые ссылки сейчас изуродованы...
Прикрепите файл к сообщению...

typus
13.11.2006, 21:27
вроде бы я убрал только комменты в первом коде, и его пропустили...вкладываю...
блок... и модуль...
Спасибо!

whitepanther
13.11.2006, 22:36
вроде бы я убрал только комменты в первом коде, и его пропустили...вкладываю...
блок... и модуль...
Спасибо!

Исправил (не оптимизировал) Ваш блок сообщений+ссылок+файлов+зарегистрированных пользователей...от РусЦентра:)
Только есть один вопрос... Вы изначально, кликнув по названию любого последнего файла, попадаете на его описание или нет? У меня работа с модулем Files реализована чуть-чуть по-другому:)

P.S.:
С новостями работать не буду, т.к. раньше этот код не видел и перелопачивать его я не хочу.

typus
13.11.2006, 23:16
Спасибо.Попадаю не на описание файла,а на начало раздела files.
зы:проделал,то что вы мне посоветовали выше с измененым файлом,все корректно,но запрсов стало вместо 161 - 160.В любом случае,спасибо,а мне придется копать дальше.

whitepanther
13.11.2006, 23:40
а сделать вам, чтобы сразу к описанию файла ссылка была?

typus
14.11.2006, 00:29
Спасибо,вот сейчас еще заметил,после изменений (верхних) в mainfile.php - перестали отображаться опросы,кроме текущего.Так что копать,в смысле,оптимизировать,надо в этих блоке и модуле,кое-где еще порыл,под админом 154,под юзером - 113 запросов.
p.s.не получается - вернее,выводит на файл только под админом,под юзером - извините,этот модуль не активен.
p.p.s.Скорее всего,что-то в оптимизации задействовал,теперь не могу найти, и в моем варианте стало так же

whitepanther
14.11.2006, 01:09
Это уже в настройках самого модуля "files" смотрите, а не на блок пеняйте...

typus
14.11.2006, 01:17
Нет,ну к вам кроме спасибо никаких проблем и претензий не приведи господь.А модуль files открыт для всех,видимый в т.ч. для анонимов, и из блока пользователя доступен без проблем.И я конечно могу ошибиться,но как будто до того как начал с этим модулем мудрить,то в прошлом варианте были файлы доступны из этого модуля всем.Просто есть привычка,после любых изменений проверять все под админом и под юзером.Хотя...Видимо,где-то все-таки проверить это забыл.

whitepanther
14.11.2006, 01:30
посмотрите как выглядит под пользователем адрес страницы для любого из последних файлов и как выглядит ссылка на главной тоже под пользователем...
сравнивайте также регистр знаков (большие/маленькие).

typus
14.11.2006, 01:46
С этим все,спасибо еще раз,и правда,все дело в одной букве -F или f в названии модуля.Так что это все поправил,иду дальше.

whitepanther
14.11.2006, 01:51
У Вас изначально был с маленькой буквы, что меня удивило...
А модуль голосований у Вас какой?
Стандартный Surveys или Voting?

typus
14.11.2006, 02:11
Surveys

whitepanther
14.11.2006, 02:23
Он тоже жрет нехило ресурсов:(
Можно заменить на Voting:
http://rus-phpnuke.com/modules.php?name=Files&go=view_file&lid=285

Что касается работоспособности оптимизации:
Оптимизировать саму нюку по этой инструкции желательно полностью, тогда будет законченный вариант. Глюки при проверках после каждой замены весьма вероятны, т.к. код частично оптимизирован, а некоторые связанные с оптимизированными кусками функции могут работать некорректно до полной оптимизации.
Но я ни в коем случае не отговариваю от проверок.

typus
14.11.2006, 02:47
спасибо,попробую завтра.в принципе,что касается оптимизации,то по инструкции -то практически все и провел,первый раз - полностью все, а потом пошагово с проверками,чтобы определить,где глючит.так и нашел.с новостями тоже все провел,вроде корректно все,вот осталось как я думаю вот этот блок и этот модуль,ну да начну завтра.

typus
14.11.2006, 23:45
Заменил модуль опросов,не очень легко получилось,отписался на рус-нюке,в двух словах:на оптимизированную нюку ставится с ошибками,пришлось ставить на неоптимизированную, а потом накатывать по новой обработанные файлы.Почти день убил - результат - минус почти 30 запросов.Теперь осталось только блок форума от рус-центра оптимизировать,я смотрю,для вывода каждой темы требуется 4 запроса.Т.е.если я хочу последние 10 - 40 запросов.Пробую разобраться с похожими вариантами блоков,которые используют меньше запросов,например,тот блок,all,что упоминался на 2 странице этой темы,или блок - форумс,что можно скачать на каждом из русских нюке-сайтов(про который в комментах стоит,что он делает один запрос) - было бы замечательно,но не получается пока,что-то где-то ошибку делаю.То все нормально вроде,но ссылки на сообщения не ведут куда надо,то вдруг(с блок-форумсом)начинает съезжать страница,и вбок, и вниз,недопонимаю пока.В принципе,я не сомневаюсь,что разберусь рано или поздно,тогда выложу этот блок оптимизированный,может кому пригодится.Ну а если кто-то захочет глянуть и мне помочь,блок я приаттачил в сообщениях выше,буду очень признателен.

Alex_71
24.11.2006, 16:02
Сразу прошу прощения!
У меня на локалке стоит PHP-Nuke 8.0 русифицированная. Под администратором на главной 110 запросов, а при входе в раздел администрации - 164. Можно ли оптимизировать мою версию по Вашей методике и если нет то может подскажете что можно сделать. У меня стоят следующие модули: Advertising, FAQ, Feedback, Files, News, Pages, Private_Messages, Recommend_Us, Search, Stories_Archive, Submit_News, Topics, Voting, Web_Links, Your_Account. Может можно еще что-то удалить (хотя и так уже оставил только то что необходимо) или заменить на другие модули?

Забыл сказать: Форум интегрированный

Alexander-V-Sh
24.11.2006, 17:52
Alex_71
Делайте пошагово.
Одну часть изменили, дошли до точки (когда в статье закончилось изменение какой то части).
Проверьте что получилось - работает или нет. Посмотрите на запросы.
Если все ок, приступайте дальше.

Если что то не открылось или не работает, проверяйте, не ошиблись ли где. И так постепенно что то да получится. Если нет, спрашивайте.

И не забывайте делать копии всего что изменяете. Чтобы что то не сломать.

LostPage
25.11.2006, 11:46
Эта ошибка появлялась в этой теме, но на не никто не ответил.:
Warning: fopen(NUKE_PATHcache/config) [function.fopen]: failed to open stream: No such file or directory in /usr/home/xxx/domains/mysite/public_html/mainfile.php on line 294

Warning: fwrite(): supplied argument is not a valid stream resource in /usr/home/xxx/domains/mysite/public_html/mainfile.php on line 295

Warning: fclose(): supplied argument is not a valid stream resource in /usr/home/xxx/domains/mysite/public_html/mainfile.php on line 296

Warning: fopen(NUKE_PATHcache/.htaccess) [function.fopen]: failed to open stream: No such file or directory in /usr/home/xxx/domains/mysite/public_html/mainfile.php on line 299

Warning: fwrite(): supplied argument is not a valid stream resource in /usr/home/xxx/domains/mysite/public_html/mainfile.php on line 300

Warning: fclose(): supplied argument is not a valid stream resource in /usr/home/xxx/domains/mysite/public_html/mainfile.php on line 301


Это после оптимизации. Добавлена папка cashe. Что не так? Скажите пожалуйста. Это уже спрашивали.
Все работает, но если включить показ ошибок, она показывается. Спасибо огромное за вашу работу!

whitepanther
26.11.2006, 02:44
Эта ошибка появлялась в этой теме, но на не никто не ответил.:


Это после оптимизации. Добавлена папка cashe. Что не так? Скажите пожалуйста. Это уже спрашивали.
Все работает, но если включить показ ошибок, она показывается. Спасибо огромное за вашу работу!

Похоже, что NUKE_PATH не задан...

LostPage
27.11.2006, 19:07
сделал как написано в пункте 4.

whitepanther
27.11.2006, 19:44
а 2-й пункт?

LostPage
29.11.2006, 18:06
нет этого не сделал. у меня 8 версия. чуть другой код. как мне правильно изменить и нужно ли это делать? подскажите пожалуйста.

ко второму пункту. у меня вот так:

// Define the INCLUDE PATH
if(defined('FORUM_ADMIN')) {
define('INCLUDE_PATH', '../../../');
} elseif(defined('INSIDE_MOD')) {
define('INCLUDE_PATH', '../../');
} else {
define('INCLUDE_PATH', './');
}

// Include the required files
@require_once(INCLUDE_PATH."config.php");

if (file_exists( 'config.php' ) && filesize( 'config.php' ) == 0) {
die("<br><br><center><img src=images/logo.gif><br><br><b>Есть мнение, что PHP-Nuke пока не установлена :) <br>Чтобы приступить к инсталяции PHP-Nuke нажмите на <a href='install/index.php'>эту ссылку.</a></center></b>");
}

@require_once(INCLUDE_PATH."db/db.php");

/* FOLLOWING TWO LINES ARE DEPRECATED BUT ARE HERE FOR OLD MODULES COMPATIBILITY */
/* PLEASE START USING THE NEW SQL ABSTRACTION LAYER. SEE MODULES DOC FOR DETAILS */
//@require_once(INCLUDE_PATH."includes/sql_layer.php");
//$dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);

@require_once(INCLUDE_PATH."includes/ipban.php");
if (file_exists(INCLUDE_PATH."includes/custom_files/custom_mainfile.php")) {
@include_once(INCLUDE_PATH."includes/custom_files/custom_mainfile.php");
}

Alex_71
29.11.2006, 18:29
нет этого не сделал. у меня 8 версия. чуть другой код. как мне правильно изменить и нужно ли это делать? подскажите пожалуйста.

ко второму пункту. у меня вот так:

// Define the INCLUDE PATH
if(defined('FORUM_ADMIN')) {
define('INCLUDE_PATH', '../../../');
} elseif(defined('INSIDE_MOD')) {
define('INCLUDE_PATH', '../../');
} else {
define('INCLUDE_PATH', './');
}

// Include the required files
@require_once(INCLUDE_PATH."config.php");

if (file_exists( 'config.php' ) && filesize( 'config.php' ) == 0) {
die("<br><br><center><img src=images/logo.gif><br><br><b>Есть мнение, что PHP-Nuke пока не установлена :) <br>Чтобы приступить к инсталяции PHP-Nuke нажмите на <a href='install/index.php'>эту ссылку.</a></center></b>");
}

@require_once(INCLUDE_PATH."db/db.php");

/* FOLLOWING TWO LINES ARE DEPRECATED BUT ARE HERE FOR OLD MODULES COMPATIBILITY */
/* PLEASE START USING THE NEW SQL ABSTRACTION LAYER. SEE MODULES DOC FOR DETAILS */
//@require_once(INCLUDE_PATH."includes/sql_layer.php");
//$dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);

@require_once(INCLUDE_PATH."includes/ipban.php");
if (file_exists(INCLUDE_PATH."includes/custom_files/custom_mainfile.php")) {
@include_once(INCLUDE_PATH."includes/custom_files/custom_mainfile.php");
}


Делай как в инструкции, только вместо NUKE_PATH укажи INCLUDE_PATH

LostPage
29.11.2006, 18:59
:) я извиняюсь. что-то не догнал.

whitepanther
29.11.2006, 20:54
:) я извиняюсь. что-то не догнал.
Проще говоря, у Вас два пути:
1. INCLUDE_PATH во втором шаге заменить на NUKE_PATH.
2. Или в и шагах выполнять замену с учетом того, что NUKE_PATH в них должна быть заменена на INCLUDE_PATH.

ИМХО, лучше 2-й вариант... Т.е. при каждой замене (шаги: 4, 18, 19) вместо NUKE_PATH писать INCLUDE_PATH. 2-й шаг не нужно выполнять, т.к. он уже выполнен...

LostPage
02.12.2006, 21:54
понял. :) спасибо. ошибок больше нет.

Astrix
22.01.2007, 01:06
Сегодня решил попробовать самостоятельно оптимизировать файл admin.php (версия 7.9.0 + 3.2.20)

Результат в прикрепленном файле. Прошу оценить и высказать свое мнение!

Удалось уменьшить число запросов в админке (на главной странице) со 122 до 89.

Я выделил все изменения.
Чтобы вернуть скрипту первозданный вид, достаточно удалить или закомментировать все, что находится между //Astrix--> и //<--Astrix и раскомментировать все остальное.

Жду ваших ответов!

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

Astrix
22.01.2007, 17:56
Покопался в mainfile.php...
Количество запросов уменьшилось до 71 в админке
37 запросов для гостя/52 для пользователя на главной странице.
Едем дальше...

Alexander-V-Sh
24.01.2007, 01:14
Astrix
Покопай с ненужными функциями: Бан, Рефералы, Центральные Блоки, Сообщения на главной, Сессии.

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

Astrix
24.01.2007, 12:33
Alexander-V-Sh Спасибо за совет. Обязательно учту!

BrejneV
25.01.2007, 10:34
Astrix вот тебе еще ссылочка по оптимизации http://lkrotish.narod.ru/optimize.html

да я скачал твой файл админки оптимизированной, запросов по натре меньше, а ошибок я смотрел вроде нигде не выдает! так что удачи те!+)))

Astrix
25.01.2007, 15:41
BrejneV Стараемсь ))

genix
28.01.2007, 13:09
сделал все по статье на форуме. первые четыре попытки были неудачными (то белый экран, то зацикливание - все аналогичные проблемы уже здесь у кого-то были), на пятый раз делал все пошагово, после каждого раза проверял, исправлял и все получилось. делал не на локале, а из фтп менеджера сразу на сайте.
там странности возникали.. про рендер_блокс - делал все вместе - белый экран или блоки не показываются. по очереди менял фнкции - если по порядку, т.е. рендер_блокс перед самой блокс, не пашет, а вот если сначала блокс, потом рендер - все ништяк... не знаю почему так.

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

genix
28.01.2007, 14:28
только что сменил модуль опросов и отредактировал под себя измененный модуль навигации (использующий скрипты для картинок изм-щий яркость), в итоге получилось под админом 29 запросов, под юзером - 18.
и это после того что позавчера было 120

Astrix
28.01.2007, 17:18
Мой Нюк на данный момент выполняет для Гостя, Юзера, Админа соответственно 22,23,27 запросов.
Из них 7 запросов делает NukeSentinel
Я вот думаю, стоит ли пожертвовать 7-ю запросами ради безопасности или удалить сентинель и сэкономить 7 запросов? Етественно, при этом придется просмотреть все модули вручную в поисках уязвимостей.

Кто что посоветует?

Astrix
04.02.2007, 00:38
Итак, вот мои результаты на сегодня:

Главная страница: блок навигации, голосование (Voting), блок "Пятерка новых файлов" модуля Files, одно сообщение и две новости.

Для гостя, юзера, админа соответственно:
число запросов: 15, 16,21
время генерации: ~1 с., ~1 с., ~1,5 с.
Хотя для остальных модулей эти цифры не очень отличаются...

Завтра выкладываю сайт на сервер. Поздравьте меня! :)

BrejneV
06.02.2007, 06:46
здравляю!+)

DJEKer
24.02.2007, 15:35
у меня проблемы с 7 пунктом, после изменений адрес перекидывает на уровень вверх, тоисть начальный адрес был - http://localhost/nuke/html/index.php, стал - http://localhost/nuke/index.php

как быть?

и еще прикол в админке: значки в разделе управления модулями - разможились по несколько штук, у кого-то похожая пролема уже была, возможно из-за пропуска некоторых пунктов оптимизации

вообщем после всех изменений стало - 84 запросов (News модуль на главной), от 170 начальный (уже неплохо, но все равно много)
это с расчетом того что я убрал все лишнее, навигацию сделал свою, так как предложенная (о запросов) - не работает

с остальным, кроме 2 пункта - все работает

Soniks
24.02.2007, 18:19
DJEKer где изменяли адрес?

makfatum
25.02.2007, 16:09
здравствуйте!
спасибо за пост об оптимизации!
у меня возник следующий вопрос
до оптимизации было - открытие главной страницы под админом: 0.185 секунды и 242 запросов к базе данных
после: - открытие главной страницы: 0.518 секунды и 74 запросов к базе данных
как видно число запросов значительно сократилось, но почему-то во столько же раз, во сколько сократилось число запросов к бд увеличилось время открытия страницы...с чем это может быть связано? 0.518 секунды - это много?
и вобще отчего это время зависит? загруженность графикой? или это просто скорость обработки скриптов сервером?

Astrix
25.02.2007, 16:34
Это скорость самого PHP-обработчика
Soniks в своей статье использовал для оптимизации кеширование. Это повысило нагрузку на PHP (и в некоторых случаях на файловую систему сервера), но сняло ее с БД. А я так понимаю, это и было целью данной статьи. Обычно БД - есть краеугольный камень, из-за которого могут быть проблемы с хостером. А PHP в этом плане выручает.
Снижение производительности - плата за снятие нагрузки с MySQL

Я схожим образом оптимизировал свой нюк. Сейчас на главной странице у меня независимо от количества новостей и некоторых других факторов скрипт выполняет 6-7 запросов к бд. правда при этом на моем домашнем компьютере генерация страницы занимает порядка 0,9 с. На сервере в 2-3 раза быстрее. Т. е. где-то 0,5-0.4 c. (точно не знаю. это по моим приблизительным подсчетам)

DJEKer
25.02.2007, 21:43
DJEKer где изменяли адрес?

какой адрес? все изменения только в mainfile проводились

Alexander-V-Sh
25.02.2007, 23:22
DJEKer

Ссылки проверьте.

http://localhost/nuke/html/index.php
Это написано <a href="index.php">


http://localhost/nuke/index.php
Это написано <a href="/index.php">

(если не ошибаюсь)

isic
01.03.2007, 19:09
Здравствуйте уважаемый народ. У меня вопрос к Вам, а особенно Администратору Soniks скажи пожалуйста сколько будет стоит Ваша работа по оптимизации НЮКИ, а именно у меня стоит 8 версия. Посмотрел написанную Вами тему по оптимизации НЮКи и понял что мне лучше туда не влезать но что это нужно я понимаю поскольку хостер у меня и так не важный. Заранее благодарю Вас за ответ и уделёное мне время.

RETSAM
13.03.2007, 12:00
здравствуйте!
отличная статья про оптимизацию, только у меня возникли некоторые вопросы:
у меня пункты 7 и 10 несработали, и на главной выдает сообщение "проблема: домашняя страничка пропала". помогите пожалуйста

isic
13.03.2007, 16:47
помогите. я оптимизировал блок модуль и вставил туда код который вы написали. теперь у меня в админке всё задвоилась а именно в админке управление модулями всё размножилось каждый раздел размножился на 9, то есть например управление модуля баннеры 9 сыллок с картинкой. удалил блок модуль и залил старый то есть родной блок модуль но но это не исчезло что делать помогите плиз.

Astrix
13.03.2007, 17:57
смотри в бд - возможно там появились дубликаты

isic
13.03.2007, 18:09
а как понять что есть оригинал а что нет оригинал и как хотя бы примерно они называются?

Astrix Плиз подскажи )) вся надежда на тебя

Astrix
13.03.2007, 18:15
записи в бд называются так же, как диркетории модулей. просто удали из базы все записи с одинаковыми названиями модулей, начиная снизу. самый верхний из всех повторов обычно и есть оригинал (если ты не менял режимов сортировки таблицы)

isic
13.03.2007, 18:31
Уважаемый Astrix я не разбераюсь честно сказать в БД
Ну вот что там есть. Посмотри ты та лучше знаешь
nuke_antiflood
nuke_authors
nuke_autonews
nuke_banned_ip
nuke_banner
nuke_banner_clients
nuke_banner_plans
nuke_banner_positions
nuke_banner_terms
nuke_bbauth_access
nuke_bbbanlist
nuke_bbcategories
nuke_bbconfig
nuke_bbdisallow
nuke_bbforum_prune
nuke_bbforums
nuke_bbgroups
nuke_bbposts
nuke_bbposts_text
nuke_bbprivmsgs
nuke_bbprivmsgs_text
nuke_bbranks
nuke_bbsearch_results
nuke_bbsearch_wordlist
nuke_bbsearch_wordmatch
nuke_bbsessions
nuke_bbsmilies
nuke_bbthemes
nuke_bbthemes_name
nuke_bbtopics
nuke_bbtopics_watch
nuke_bbuser_group
nuke_bbvote_desc
nuke_bbvote_results
nuke_bbvote_voters
nuke_bbwords
nuke_blocks
nuke_cities
nuke_comments
nuke_comments_moderated
nuke_config
nuke_confirm
nuke_counter
nuke_cpg_albums
nuke_cpg_categories
nuke_cpg_comments
nuke_cpg_config
nuke_cpg_exif
nuke_cpg_installs
nuke_cpg_pictures
nuke_cpg_usergroups
nuke_cpg_votes
nuke_downloads_categories
nuke_downloads_downloads
nuke_downloads_editorials
nuke_downloads_modrequest
nuke_downloads_newdownload
nuke_downloads_votedata
nuke_encyclopedia
nuke_encyclopedia_text
nuke_faqanswer
nuke_faqcategories
nuke_groups
nuke_groups_points
nuke_headlines
nuke_journal
nuke_journal_comments
nuke_journal_stats
nuke_links_categories
nuke_links_editorials
nuke_links_links
nuke_links_modrequest
nuke_links_newlink
nuke_links_votedata
nuke_main
nuke_message
nuke_modules
nuke_nlbook
nuke_optimize_gain
nuke_pollcomments_moderated
nuke_public_messages
nuke_queue
nuke_referer
nuke_related
nuke_session
nuke_stats_date
nuke_stats_hour
nuke_stats_month
nuke_stats_year
nuke_stories
nuke_stories_cat
nuke_subscriptions
nuke_survey
nuke_survey_check
nuke_survey_comments
nuke_topics
nuke_users
nuke_users_temp

Astrix
13.03.2007, 18:43
тыкаешь табличку nuke_modules - справа откроется ее структура.
затем вверху в правом окне выбираешь обзор
в столбце title перечислены названия модулей
ставишь галки напротив ненужных записей и внизу найдешь C отмечеными:
жми крестик - удалить.

проделай это для каждого модуля в отдельности - так вернее будет. В крайнем случае, если что-то лишнее удалишь, нюк сам вставит записи в БД, но придется заново астраивать параметры соответствующего модуля в управлении модулями.

isic
13.03.2007, 18:50
Astrix
Я посмотрел там всё в норме. Может Вы проблемы не поняли. Я тогда сделаю картинку и выставлю покажу.

Astrix
13.03.2007, 19:11
не стоит ничего выкладывать. я понял проблему. что же до вышесказанного, то я сделал предположение насчт бд. возможно, проблемы в самом коде моуля и непосредственно он записи дублирует, не касаясь бд. тогда копать в другом месте надо

isic
13.03.2007, 19:17
Astrix
Вот я залил архив внутри архива картинка с изображением проблемы. Не могу понять почему так помогите решить проблему.

ну сам модуль я удалил. и он всё равно всё в таком виде.

Astrix
13.03.2007, 20:42
У меня была точно такая же проблема, когда я только начал заниматься оптимизацие своего нюка.

И если проблема сохраняется даже с родным блоком, есть всего два возможных варианта:
-лишние записи в БД
-логические ошибки в admin.php

поэтому я и сделал упор на вашу БД

isic
14.03.2007, 11:40
Soniks Может Вы мне поможете. Скажите что и как сделать что бы исправить. Astrix Может Вам дать доступ к моей базе Вы посмотрите. Может я просто не углядел. Как я выше писал в БД я вообще ничего не знаю и как там работать. И Вы правы я пытался оптимизацию делать

Astrix
14.03.2007, 11:47
Напишите в приват ссылку, логин и пароль к базе. А лучше вышлите на этот адрес: admin@webrob.net.ru

Но перед этим попробуйте сделать следующее:
-поставьте родной блок Modules
-родной admin.php
-проверьте

если все останется на своих местах, значит, дело в БД

isic
14.03.2007, 12:26
всё осталось как и есть((

сейчас вышлю данные на почту

isic
16.03.2007, 13:14
Я убрал на главной странице стандартный Блок User info и у меня моментально исчезло 8 запросов. Народ может кто нибудь поделиться уже оптимизированым Блоком User info? Если конечно Вам не жалко будет )) Просто я в php не особо не понимаю и мне трудно будет самому делать оптимизацию кода данного Блока

Soniks
17.03.2007, 23:09
isic http://mynuke.ru/modules.php?name=Downloads&op=getit&lid=101 как пример

isic
19.03.2007, 17:18
провел я оптимизацию. если честно я и не думал что у меня получиться. но сейчас у меня такие данные:
под пользователем на главной 27 запросов, под гостем 23.
ну я вроде бы все что с мог оптимизировал. но за 20 запросов у меня только в простеньких модулях которые я сам создал, простые текстовые модули. но на основных у меня не получается уменьшит запросы ниже 20. может подскажите что сделать? сразу пишу инфу стоит 8 нюка, удалил рефералы, статистику, топ 10, рецензии, ну и еще кое что. честно пишу у меня проблемы с модулем News у меня не получается его улучшить, то то тут написано не подходит для 8 версии как я понял. может возможно заменить этот модуль на другой но который бы не был хуже него по возможностям?

Astrix
20.03.2007, 15:07
Можно поставить от 7.9 - особых различий там нет вроде. И с ним уже колдовать. А еще поищите на разных сайтах. Есть немало всяких модулей, аналогичных News

RETSAM
21.03.2007, 08:03
здравствуйте!
у меня вопрос: у меня пункты 7 и 10 не запустились, и на главной выдает ошибку "домашняя страница пропала". помогите пожалуйста!

Anibus
25.03.2007, 15:26
здравствуйте,

после оптимизации не получатся устанавливать правила показа блоков и модулей пользователям.

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

подскажите, где может быть ошибка? и как это исправить?

спасибо.

Anibus
26.03.2007, 22:32
Также после замены кода

$result = $db->sql_query("SELECT sid, catid, aid, title, time, hometext, bodytext, comments, counter, topic, informant, notes, acomm, score, ratings FROM ".$prefix."_stories $qdb $querylang ORDER BY sid DESC limit $offset, $storynum");

На


$result = $db->sql_query("SELECT s.*, t.*, c.title as title1 FROM ".$prefix."_stories AS s LEFT JOIN ".$prefix."_topics AS t ON(t.topicid=s.topic) LEFT JOIN ".$prefix."_stories_cat AS c ON( c.catid=s.catid and s.catid>0) $qdb $querylang ORDER BY s.sid DESC limit $storynum");


Исчезает page_numbers

Простая вставка $offset, не помогает.


Может на что-то другое этот код сменить?

P.S. Стоит 7.9 3.2

BEN
03.04.2007, 14:02
у меня версия 8 но всё что я смог добитья это на главной 66 запросов , а в админке 162.

кто может помочь с оптимизацией.

kabbalahportal
13.04.2007, 10:08
Когда же наконец уважаемый администратор начнет подробно описывать Оптимизацию PHPNuke 8.0, так же как он это сделал для PHPNuke 7.9 ???

isic
13.04.2007, 11:39
народ у меня 8 нюка и я добилься не плохих результатов по оптимизации по данным советам. у меня на главной под пользователем 28, под гостем 27. под админом на главной 31. на форуме 15-16, в галереи 31. в обычных модулях 18-16. так что делайте потихонечку.

BEN
13.04.2007, 12:40
может ты тогда скинешь архивчик измененых файлов а мы посмотрим на сколько у нас пройдет оптимизация или на мыло или здесь на форуме. плизз.

isic
13.04.2007, 13:30
ну ты расскажи с начала какую работу ты сам провёл? что ты сделал, что ты по удалял?

BEN
13.04.2007, 13:32
я очень много проделал и вроде бы получилось немного но после оптимизации сайт начал глюсь блок не активизировались новости не добавлялись и другие проблемы

isic
13.04.2007, 14:00
Ты зайди вот по этой ссылке я тут много взял http://lkrotish.narod.ru/optimize.html
Потом ты читал советы по оптимизации rus-phpnuke.com?
Если нет то почитай и прислушайся тамошним советам мне они тоже очень помогли. Вот ссылочка
http://rus-phpnuke.com/modules.php?name=Content&go=show&p=18
Я по началу тоже думал то что даёт Sonik не подходит для 8 НЮКи. Да есть не которые моменты которые действительно не подходят к 8 НЮКи. Советую от себя изменил код по одному из шагов пробегись по сайту проверь его работу свойства возможности. Что то не работает возвращаешь как есть или пишешь сюда тут уже народ подсказывает. И самое главное поменяй стандартный модуль Опроса, модуль Dowloads поменяй на модуль File. И ещё сделай навигацию по сайту обычную на html коде. Стандартная навигация много запросов делает.

BEN
13.04.2007, 15:28
И ещё сделай навигацию по сайту обычную на html коде. Стандартная навигация много запросов делает.

Короче сегодня мне повезло я добился на главной 23 запросов ура, а какнавигацию на html коде

isic
13.04.2007, 16:01
вот видешь получилось. по поводу навигации поищи в каталоге файлов в разделе навигация
3 уровневое меню

artem_xk
16.04.2007, 00:40
пожалуйста оптимизируйте этот блок! очень нужен он мне! но делает 70 запросов примерно

isic
19.04.2007, 17:00
Soniks Помоги плиз после оптимизации перестал работать Page Numbers, в свойствах сайта установил 5 новостей на главной что бы показывал, но всё равно не работает.

$result = $db->sql_query("SELECT s.*, t.*, c.title as title1 FROM ".$prefix."_stories AS s LEFT JOIN ".$prefix."_topics AS t ON(t.topicid=s.topic) LEFT JOIN ".$prefix."_stories_cat AS c ON( c.catid=s.catid and s.catid>0) $qdb $querylang ORDER BY s.sid DESC limit $offset, $storynum");
На совету Михи в это строке проставил $offset, после limit . Но это не помогло. Что делать помоги Соникс

Soniks
23.04.2007, 21:06
isic а у вас там есть записи переменной $offset не удалили вы код самого Page Numbers?

Soniks
23.04.2007, 21:29
artem_xk проверьте работает корректно он? http://mynuke.ru/modules.php?name=Downloads&op=getit&lid=208

artem_xk
24.04.2007, 05:07
Soniks спасибо вам агромное! все класно заработало! запросов в всего на сайте 22 а было 98 :)

isic
24.04.2007, 11:53
Soniks Код Page Numbers есть я не трогал его вообще


// Start page Numbers
if ($numpages > 1) {
echo "<br>";
OpenTable();
echo "<center>";
if ($pagenum > 1) {
$prevpage = $pagenum - 1;
$leftarrow = "images/left.gif";
if ($new_topic==0){
echo "<a href=\"modules.php?name=$module_name&pagenum=$prevpage\">";
}else{
echo "<a href=\"modules.php?name=$module_name&new_topic=$new_topic&pagenum=$prevpage\">";
}
echo "<img src=\"$leftarrow\" align=\"absmiddle\" border=\"0\" hspace=\"10\"></a>";
}

echo "[ ";
for ($i=1; $i < $numpages+1; $i++) {
if ($i == $pagenum) {
echo "<b>$i</b>";
} else {
if ($new_topic==0){
echo "<a href=\"modules.php?name=$module_name&pagenum=$i\">$i</a>";
} else {
echo "<a href=\"modules.php?name=$module_name&new_topic=$new_topic&pagenum=$i\">$i</a>";
}
}
if ($i < $numpages) { echo " | "; } else { echo " ]"; }
}

if ($pagenum < $numpages) {
$nextpage = $pagenum + 1;
$rightarrow = "images/right.gif";
if ($new_topic==0){
echo "<a href=\"modules.php?name=$module_name&pagenum=$nextpage\">";
} else {
echo "<a href=\"modules.php?name=$module_name&new_topic=$new_topic&pagenum=$nextpage\">";
}
echo "<img src=\"$rightarrow\" align=\"absmiddle\" border=\"0\" hspace=\"10\"></a>";
}
echo "</center>";
closetable();
}
// End Page Numbers


Вот ещё прилагаю файл index модуля NEWS посмотрите пожалуйста

Soniks
24.04.2007, 19:07
isic вроде все коректно...
и что выводит весь список новостей? а вы увены что у вас количество новостей превышает количество установленных новостей на главной или в настройках пользователя (Аккаунта), проверьте.

isic
25.04.2007, 11:36
Знаете у меня вот такое подозрение появилось. Раньше до оптимизации НЮки в настройках сайта стояла 10 новостей на сайте. Потом я начал делать оптимизацию нюки провёл оптимизацию ядра (майнфайл) и админки. Всё по Вашей теме, так вот после того как я провёл оптимизацию я поменял в даминке количество новостей на главной до 5 штук. Вчера я проверил я взял разместил 11 новостей получилась вот такая ситуация. 10 новостей разместились на главной, а самая первая новость и по счёту 11 она пропала куда то, то есть её на главной не было видно. Так вот моё предположение может дело в файлах майнфайл и админ.php може там произошло не корректная обмен функции? В БД я провел в таблице конфиг всё в порядке. И в свойствах сайта у меня стоит запрет на то что бы пользователи могли менять количество новостей на главной.

isic
26.04.2007, 11:32
Уважаемый Soniks помогите по возможности решит проблемку. я даже не понимаю где копать и как исправить.

Soniks
27.04.2007, 14:07
isic попробуйте почистить кешь в папке cache
может там настройки както не сохранились.

isic
27.04.2007, 18:53
Soniks Подчистил я папку кешь. На главной теперь отображается 5 новостей и как и указано в админке. Но не работает Page Number первые 5 статей исчезают. Я как понимаю Page Number должен работать таким образом если новостей больше 5 штук то на главной странице должно быть появиться номера страница типа : 1/2/3/4 и т.д. Но такого нету. Как сделать так что бы заработало?

Alex_Ch
03.05.2007, 16:52
в админке стали множится модули, как не зайдешь - всех по одному прибавилось :(


У меня было нечто подобное. Только всех модулей стало по шесть. Я зашёл в phpMyAdmin и поудалял из БД лишние записи.

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

isic
08.05.2007, 11:52
Уважаемый Soniks вот решил по новому сделать оптимизацию News файл index ну что бы Page Number работал. Ну так вот у меня проблема со заменами двух строк.
1. Меняю вот эту строку
$qdb = "WHERE (ihome='0' OR catid='0')";
на эту
$qdb = "WHERE (s.ihome='0' OR s.catid='0')";
В этом случаии исчезает всё и новости и Page Numbers на главной.
2. Меняю эту строку
$result = $db->sql_query("SELECT sid, catid, aid, title, time, hometext, bodytext, comments, counter, topic, informant, notes, acomm, score, ratings FROM ".$prefix."_stories $qdb $querylang ORDER BY sid DESC limit $storynum");
на это
$result = $db->sql_query("SELECT s.*, t.*, c.title as title1 FROM ".$prefix."_stories AS s LEFT JOIN ".$prefix."_topics AS t ON(t.topicid=s.topic) LEFT JOIN ".$prefix."_stories_cat AS c ON( c.catid=s.catid and s.catid>0) $qdb $querylang ORDER BY s.sid DESC limit $storynum");

В этом случаи исчезает только сами статьи новостей а Page Тгиукы на главной остаёться.
Нюка у меня стоит 8 провёл оптимизацию нюки по Вашей статье и по удалял лишние модули по статье http://rus-phpnuke.com

isic
14.05.2007, 17:01
Soniks Ну так как поступить пожскажите.

Soniks
15.05.2007, 11:17
Alex_Ch создать блок самостоятельно используя html, воспользуйтесь поиском по форуму.
isic вроде вы изменения сделали правильные, исчезают статьи возможно из за того, что нет такких которые бы удовлетворяли критериям $qdb.
Если не получится прикрепите еще раз исправляемый файл, посмотрю....

isic
15.05.2007, 12:02
Уважаемый Soniks Вы уж извините что я отнимаю Ваше драгоценное время. Борьба идёт за каждый запрос к БД поэтому это так важно)))). В принципе без этих двух строк он работает на главной делается 23 запроса, но под админом на главной 30 запросов. Хотя у меня бывало и 27 под админом. Просмотрите пожалуйста. Заранее благодарю

Soniks
16.05.2007, 15:08
isic что то вы кажется не тот вайл прикрепили, не заметно там особых оптимизаций.
если вы меняете
$qdb = "WHERE (ihome='0' OR catid='0')";
на это
$qdb = "WHERE (s.ihome='0' OR s.catid='0')";
то следует так же изменить и запрос:
$sql_pn = "select COUNT(*) AS pn from ".$prefix."_stories $qdb" ;
ведь тут тоже встречается переменная $qdb, поэтому получится:
$sql_pn = "SELECT COUNT(*) AS pn FROM ".$prefix."_stories AS s $qdb" ;
и главный запрос будет выглядить тогда так (у вас была допущена ошибка с LIMIT):
$result = $db->sql_query("SELECT s.*, t.*, c.title as title1 FROM ".$prefix."_stories AS s LEFT JOIN ".$prefix."_topics AS t ON(t.topicid=s.topic) LEFT JOIN ".$prefix."_stories_cat AS c ON( c.catid=s.catid and s.catid>0) $qdb $querylang ORDER BY s.sid DESC LIMIT $offset, $storynum");

typus
08.08.2007, 22:03
Уф, вот как все таки удается вам добиваться 20-25 запросов - завидую.У меня под админом 76,под юзером 67, и то, после того как блок навигации стандартный убрал и поставил простой html, чтоб совсем без запросов - ушло 45 аж этих самых запросов.
Осталось в принципе 2 места,где еще можно что то сделать, это модуль последних новостей, что стоит на http://rus-phpnuke.com или на http://www.shkurki.ru/ на главной,три новости, остальные (там 20?)одной строкой,
и центральный блок вывода новостей с форума - у меня при выводе 5 сообщений около 35 запросов - черезчур. Если кто может,поделитесь плиз оптимизированными версиями этих модуля и блока, ну или кто подобные использует свои,с малым количеством запросов, буду признателен.
Спасибо.
Да, вот еще, потестил парой страниц ранее выложенный тут оптимизированный admin.php - глюков вроде нет,но вот на главной с этим файлом число запросов не уменьшается.На главной админки - да, причем существенно, а на главной сайта,неважно, под админом,или юзером, остается таким же.В принципе, это логично, наверно, так и должно быть,вопрос, насколько вообще это существенно,если на сайте один - два админа?Мне кажется, особо тут не стоит заморачиваться,или?Разве что для полного удовлетворения :lol:
Или я не прав?

Alex_Ch
09.08.2007, 19:02
извините ламера, но почему нельзя выложить измененные файлы для каждой версии? плиз закачайте кто-нибудь для 7.9

typus
10.08.2007, 01:42
Отвоевал еще немного,теперь по запросам 35-42-52 соответственно аноним-юзер-админ..Ну может быть,ну,может быть,еще десяток можно будет отбить,ну с admin.php еще еще можно...Как думаете,может хватит? :oooo:
Alex_Ch ,да проблем то положить файлы нет,просто, по моему мнению,лучше все пройти пошагово, каждый раз после каждого изменения проверяя функциональность,
об этом уже не раз говорилось.Нет,если хочешь, без проблем,напиши список файлов,что тебе нужны, я свои выложу,хотя у меня возможно и далеки отсовершенства :lol:

Val
25.08.2007, 02:44
А лично мне интересен результат сайта shkurki.ru ...
Смотришь, а внизу запросы к БД.
Так вот, как забитый блоками сайт мог достигнуть таких результатов???
0.212 секунды и 34 запросов к базе данных с главной и 0.256 секунды и 28 запросов к базе данных с архива новостей заваленного всяким инфо! :oooo:

Val
25.08.2007, 22:52
При изменении вызова конфиг файла и подключении к бд в Mainfile.php меняю

if (defined('FORUM_ADMIN')) {
require_once("../../../config.php");
require_once("../../../db/db.php");
} elseif (defined('INSIDE_MOD')) {
require_once("../../config.php");
require_once("../../db/db.php");
} else {
require_once("config.php");
require_once("db/db.php");
/* FOLLOWING TWO LINES ARE DEPRECATED BUT ARE HERE FOR OLD MODULES COMPATIBILITY */
/* PLEASE START USING THE NEW SQL ABSTRACTION LAYER. SEE MODULES DOC FOR DETAILS */
require_once("includes/sql_layer.php");
$dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);
}

на

if (defined('FORUM_ADMIN')) {
define('NUKE_PATH', '../../../');
} elseif (defined('INSIDE_MOD')) {
define('NUKE_PATH', '../../');
} else {
define('NUKE_PATH', './');

/* FOLLOWING TWO LINES ARE DEPRECATED BUT ARE HERE FOR OLD MODULES COMPATIBILITY */
/* PLEASE START USING THE NEW SQL ABSTRACTION LAYER. SEE MODULES DOC FOR DETAILS */
require_once("includes/sql_layer.php");

/*----------Проблемная строка первоначально----------------------*/

$dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);

/*----------Проблемная строка первоначально----------------------*/

}
require_once(NUKE_PATH."config.php");
require_once(NUKE_PATH."db/db.php");


/*-------Перенос строки сюда--------------------------*/

$dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);

/*-------Перенос строки сюда--------------------------*/

В админпанели в управлении модулями ссылка Форумы (администрирование форума) работает, но не работает установленный блок "Reklama"
при переносе проблемной строки блок работает, а ссылка на администрирование форума нет (белый экран).
Замена кода помогает снизить количество запросов на 1 (мало, но все таки).
как изменить код?
:mad:

Soniks
28.08.2007, 11:49
Правильнее так:
if (defined('FORUM_ADMIN')) {
define('NUKE_PATH', '../../../');
require_once(NUKE_PATH."config.php");
require_once(NUKE_PATH."db/db.php");
} elseif (defined('INSIDE_MOD')) {
define('NUKE_PATH', '../../');
require_once(NUKE_PATH."config.php");
require_once(NUKE_PATH."db/db.php");
} else {
define('NUKE_PATH', './');
require_once(NUKE_PATH."config.php");
require_once(NUKE_PATH."db/db.php");
require_once("includes/sql_layer.php");
$dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);
}

Val
29.08.2007, 02:47
Еще одна неточность появилась при изменении is_admin,is_user и is_group на предложенные Soniks'ом оптимизированная функция is_group не позволяет проверять пользователей на доступ в тот или иной модуль (в модуль добавить новость уже имеют доступ все зарегестрировавшиеся , а не члены определенной группы),а если функция стандартная - все в порядке....

popkin
09.11.2007, 20:40
Огромное СПАСИБО Soniks-у за статью!
После оптимизации NUKE 8.0 по принципам изложенным в статье Soniks-а - ядро системы делает 0 запросов!
Кеш рулит! Кешируйте все что только можно и обновляйте его по мере необходимости.
Только смотрите чтобы у вашего хостера узким местом не оказалась файловая система.

GAMMA
01.02.2008, 00:10
доброго всем времени суток!
я оптимизировал нюку более года назад по информации отсюда. под анонимом было 48 запросов, под юзером 53. на днях хостер перенёс сайт на новый сервак для разгрузки старого и ещё потому что я поменял тарифный план на 1500 метров. так вот почему то сразу на 40 запросов увеличилось количество запросов со всех страниц. я так подозреваю что какой то из блоков или несколько сразу стали давать больше запросов. связанно это может быть с тем что на новом сервере стоит более новая бд (помоему последняя версия). кто нибудь сталкивался с подобным явлением?

GAMMA
04.02.2008, 21:08
Упс... Видимо никто не сталкивался. Удалось убрать 6 запросов заменив блок Shout-blocks старой версии на новый. Но он всё равно делает аж 34 запроса! Для уменьшения нагрузки выключил его показ для гостей. Под анонимом сейчас 43 запроса. Где же копать?

Soniks
05.02.2008, 21:44
GAMMA странное явление, может вы что то поставили и забыли про это?

GAMMA
06.02.2008, 21:28
В том то и дело что ничего не ставил. По крайней мере последние пол года. Есть блоки со статичным содержанием которые никак на количество запросов не влияют. Пришло письмо от хостера что сайт перевели на новый сервер с просьбой проверить всё ли нормально работает. Я проверил, всё нормально, а на количество запросов не посмотрел. Обычно я в хэйдер смотрю в начале недели, там счётчики и показатели ТИЦ PR - Яндекс любит по понедельникам новые данные выдавать. И только тогда увидел. За неделю до этого всё было нормально. С блоками block-CPG-Random_pictures.php , block-Voting.php , block-Shout_Box.php , block-4nChat1.php , block-Birthday.php , block-Forums.php , block-User_Info.php было под анонимом 48 запросов, под юзером 53 запроса.
Когда стало 93 то я отключением вычислил что больше всего запросов пошло именно с block-Shout_Box.php . Как только я его выключил для анонимов вместе с блоком block-4nChat1.php то стало на главной всего 43. Под юзером после замены block-Shout_Box.php стало 87. Я просто нашёл немного более новую чем у меня была версию модуля с блоком, но я заменил только блок, так как модуль переделывал под корректное отображение времени сообщения для юзеров и анонимов.
У меня подозрение что данная проблема как то связанна с тем что на новом сервере стоит новая версия BD MySQL 5.0.45 Так же стоит PHP 5.2.5 . Апач версии 2.0.61 Lunix 2.6
И что самое интересное, при таком количестве запросов у меня сайт стал быстрее открываться. Среднее время когда у меня интернет не глючит 0.120 секунды.
Может это проблема в некоректном отображении количества запросов? Количество осталось прежнее, просто счётчик врёт? Из за каких то нестандартных настроек сервера или непредусмотренных разработчиками ньюансов, ведь Нюку делали под старые БД и версии PHP.

Soniks
11.02.2008, 10:53
GAMMA ну, быстрее открываться, это связано что сервер пошустрее работает, чем предыдущий.
Количество запросов от версии БД так же не будет зависеть, т.к. подсчет их идет до того момента как он будет отправлен в БД, и не зависит, обработает его БД ли нет.
А вот версия php может сыграть свою роль, например какое-то условие не сработать, вследствие чего выполнить (по коду) какой-либо запрос. Здесь необходимо все пересматривать в ручную и переделывать скрипты под требования 5-й версии и БД и PHP для более правильной работы.
Может, поможет найти причину включение отображение Notice

GAMMA
13.02.2008, 23:46
спасибо, попробую покопаться.

ztnzx
10.02.2009, 01:46
сабжевая тема про оптимизацию лично у меня не прогружается... проблема ?

Soniks
10.02.2009, 14:12
ztnzx не понятен ваш вопрос

Maks
20.06.2009, 03:00
Просьба оптимизировать модуль Html_Content

Ispanez
10.05.2021, 10:16
Здравствуйте,
При размещении материала не проходят символы в новости, статье ' То есть вот так It's не проходят, убирать приходится '

Где то запрещены. Сейчас уже не помню что менял. Раньше проходили. Может кто может подсказать.

Soniks
11.05.2021, 20:16
а что именно происходит при размещении статьи? какое-то сообщение отображается?
какая версия системы у вас стоит?

Ispanez
12.05.2021, 17:48
Здравствуйте,
Ничего не происходит, не помещается или не изменяется, сообщений никаких нет. Версия 7.8.
На PHP 5.6 работает, изменения были в mainfile.php чтобы на версии PHP работала.

Soniks
12.05.2021, 19:41
Видимо ваши изменения и версия php 5.6 приводит к этому.
Можно попробовать в функциях где происходит сохранение новости заменить что то подобное:
$subject = stripslashes(FixQuotes($subject));
На
$subject = htmlspecialchars($subject, ENT_QUOTES);
Если скажем поле содержит html то тогда лучше так вот символы обрабатывать:
$bodytext = stripslashes(FixQuotes($bodytext));
Меняем на:
$bodytext = addcslashes($bodytext, "'");

Возможно такой подход поможет, но к сожалению PHPNuke уже не совместима с PHP 5.6 без координатных изменений по всему коду.

Ispanez
12.05.2021, 22:28
Есть такой код у меня в mainfile.php

Кажется из-за него проблема. Как изменить в нем не знаю.



function FixQuotes ($what = "",$strip="") {
$what = str_replace("'","''",$what);
while (stripos_clone($what, "'")) {
$what = str_replace("'","'",$what);
}
return $what;
}

Soniks
13.05.2021, 23:03
Можно попробовать так:

function FixQuotes ($what = "",$strip="") {
return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $what);
}