Forum. MyNuke.ru

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

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=D...p=getit&lid=208

artem_xk 24.04.2007 05:07

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

isic 24.04.2007 11:53

Вложений: 1
Soniks Код Page Numbers есть я не трогал его вообще

PHP код:
 // 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

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

Soniks 16.05.2007 15:08

isic что то вы кажется не тот вайл прикрепили, не заметно там особых оптимизаций.
если вы меняете
PHP код:
 $qdb "WHERE (ihome='0' OR catid='0')"

на это
PHP код:
 $qdb "WHERE (s.ihome='0' OR s.catid='0')"

то следует так же изменить и запрос:
PHP код:
 $sql_pn "select COUNT(*) AS pn from ".$prefix."_stories $qdb

ведь тут тоже встречается переменная $qdb, поэтому получится:
PHP код:
 $sql_pn "SELECT COUNT(*) AS pn FROM ".$prefix."_stories AS s $qdb

и главный запрос будет выглядить тогда так (у вас была допущена ошибка с LIMIT):
PHP код:
 $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

Правильнее так:
PHP код:
 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 приводит к этому.
Можно попробовать в функциях где происходит сохранение новости заменить что то подобное:
PHP код:
 $subject stripslashes(FixQuotes($subject)); 

На
PHP код:
 $subject htmlspecialchars($subjectENT_QUOTES); 

Если скажем поле содержит html то тогда лучше так вот символы обрабатывать:
PHP код:
 $bodytext stripslashes(FixQuotes($bodytext)); 

Меняем на:
PHP код:
 $bodytext addcslashes($bodytext"'"); 


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

Ispanez 12.05.2021 22:28

Есть такой код у меня в mainfile.php

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


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

Можно попробовать так:

PHP код:
 function FixQuotes ($what "",$strip="") { 
    return 
str_replace(array('\\'"\0""\n""\r""'"'"'"\x1a"), array('\\\\''\\0''\\n''\\r'"\\'"'\\"''\\Z'), $what); 



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

Copyright © 2005 by Soniks