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)

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


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


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

Изначально заменяемая часть выглядит вот так:
PHP код:
 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$blockfile1);
                        } elseif (
$side == "d") {
                                
blockfileinc($title$blockfile1);
                        } 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($action0,1);
                
$now time();
                
$sub intval($row['subscription']);
                if (
$sub == OR ($sub == AND !paid())) {
                        if (
$expire != 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 == AND is_user($user) || is_admin($admin)) {
                                        
render_blocks($side$blockfile$title$content$bid$url);
                                } elseif (
$view == AND is_admin($admin)) {
                                        
render_blocks($side$blockfile$title$content$bid$url);
                                } elseif (
$view == 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 запроса.
Спасибо


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

Copyright © 2005 by Soniks