Вход
 
Главная Форум Каталог веб-мастеров Регистрация SEO библиотека
Разделы сайта
Поиск по сайту
Почта @admin-club.ru
Логин:
Пароль:
· завести почту
Новое
В картинках
см. так же графику
А так же
косточки на ногах артроз плюсневого сустава Народная медицина. · Быстро и официально спешите купить справку в бассейн по низким ценам (сейчас скидка). · Реализация продукции с кондитерских предприятий Москвы в другие города
 
Информер обновленные темы IPB и список пользователей он-лайн 5 февраля 2011
Информер обновленные темы IPB и список пользователей он-лайн

Данные информеры созданные для того, что бы снизить нагрузку на сервер при вызове страниц системы DLE. За счет информера вам удастся снизить нагрузку на БД на 2 запроса минимум. Фишка в том, что запросы к БД для информеров выполняются в абсолютно другом файле раз в 300 секунд первый информер и раз в 60 секунд второй информер. Этот самый другой файл кэширует результат своей работы в файл. Система же, если найдет такой кэш файл на жестком диске сервера просто вставит его содержимое в страницу. А если система такого кэш файла не найдет, она ловко подставит вызов JS функции в страницу, которая в свою очередь с помощью ajax вставит информеры на страницу (т.е. опять же создадутся кэш файлы которые потом будут вставляться в страницы). Обновление информеров проходит так же с помощью ajax технологий (при нажатии на ссылку обновить). Система вставляет содержимое кэш файлов, но если эти файлы изменялись больше чем 300 или 60 секунд назад, то она опять же вставляет вызов функции на страницу, которая обновит информеры. Вот и получается, что запросы распараллелены и нагрузки существенной вовсе не несут. Запросы позаимствованы из интеграции форума IPB и DLE от Калиостро. Информеры подойдут для всех версий DLE. Информер тестировался для версии IPB 3.1.2.

1. Скачайте файл ipb.zip [1,57 Kb] (cкачиваний: 240), откройте его для редактирования, вверху файла заполните данные для подключения к базе данных форума IPB.

2. Залейте файл в папку engine.

3. Откройте, предварительно сделав запасную копию файла, файл index.php для редактирования.

Найдите:

$tpl->load_template( 'main.tpl' );


Вставьте ниже на строчку:

$onload_ = "";

if( @file_exists( ENGINE_DIR ."/cache/tech1.xtmp" ) ){

    $tpl->set('<div align="center">Загрузка топиков...</div>', @file_get_contents(ENGINE_DIR ."/cache/tech1.xtmp") );

    if( ( time()-filemtime( ENGINE_DIR ."/cache/tech1.xtmp" ) ) <= 300 ){
        $onload_ = "tech(1);";
    }

}else{
    $onload_ = "tech(1);";
}

if( @file_exists( ENGINE_DIR ."/cache/tech2.xtmp") ){

    $tpl->set('<div align="center">Загрузка он-лайнеров...</div>', @file_get_contents(ENGINE_DIR ."/cache/tech2.xtmp") );

    if( ( time()-filemtime( ENGINE_DIR ."/cache/tech2.xtmp" ) ) <= 60 ) {
        $onload_ .= "tech(2);";
    }

}else{
    $onload_ .= "tech(2);";
}

if( $onload_ != "") $tpl->set('<body>', '<body onload="'.$onload_.'">');


В этом коде цифры 300 и 60 это время обновления информеров соответственно.

4. Откройте main.tpl – главный шаблон для редактирования (сейчас это можно делать прямо из админ-центра).

Вставьте куда вам угодно:

<div id="tech1"><div align="center">Загрузка топиков...</div></div>
<div align="right" style="margin: 3px"><a href="javascript://" onclick="tech(1,1)">обновить</a></div>


И:

<div id="tech2"><div align="center">Загрузка он-лайнеров...</div></div>
<div align="right"><a href="javascript://" onclick="tech(2,2)">обновить</a></div>


В самый низ страницы вставьте javascript, перед
</body>


Или вынесите данный код в отдельный файл, без разницы.

Для версии системы до 9.2:

<script>
function tech(id,b){
    var ajax = new dle_ajax();
    if(b)ajax.onShow ('');
    var varsString = "";
    ajax.requestFile = 'http://admin-club.ru/engine/ipb.php?do='+id+(b?'&fresh=1':'');
    ajax.element = "tech"+id;
    ajax.sendAJAX(varsString);
}
</script>


А для 9.2 вставляйте вот этот код:

<script>
function tech(id,b){
    if(b)ShowLoading('');
    $.get( "http://admin-club.ru/engine/ipb.php", {'do': id, 'fresh': (b?'&fresh=1':'0') }, function(data){
        HideLoading('');
        $("#tech"+id ).fadeOut(500, function() {
$(this).html(data);
            $(this).fadeIn(500);
        });
    });

}
</script>


Замените адрес нашего сайта на свой в вызываемом файле.

5. Готово.

На нашем сайте количество запрос сведено к 0, а генерация страницы к 1 сотой секунды для гостя, а для пользователя к 3 сотым секунды с 6 запросами. Так же я вынес выполнение cron задания в отдельный файл, который выполняется компилятором вообще отдельно от системы DLE. Смотрите код страницы, самый низ.

Запросто отвечу на вашеи вопросы в комментариях smile
 - RedRat  - 7036  - 10  - Распечатать
Demotix:
Пришлось немного изменить файл ipb.php, чтобы все нормально работало для IPB 3.2.3 + DLE 9.4
У IPB в SEO настройках стоит:
При типе URL «Путь» адреса будут иметь вид /index.php/forum/2-news/


Получилось в строке 46 файла ipb.php:

$q = $db->query("SELECT t.posts, t.views, t.forum_id, t.tid, t.title, t.last_post, t.last_poster_name, t.last_poster_id, t.starter_name, t.starter_id, t.title_seo, f.name AS forum_name FROM ".$pre."topics AS t


t.title_seo, добавлено, чтобы считывалось название топика (url)

И строка 52 получилась соответственно вот такая:

$f_.= "<tr><td><a href='http://forum.moy-domen.com/index.php/topic/".$row['tid'
;]."-".$row['title_seo']."/unread/' title='".$row['last_poster_name'].", ".strtr(date( "Y-m-j H:i" ,$row['last_post']), array( date("Y-m-j")." " => "сегодня ", date("Y-m-").(date( "j")-1)." " => "вчера ", date("Y-m-").(date( "j")-2)." " => "позавчера " ))."' target='blank'>".$row['title']."</a></
td></tr>";


Переход к последнему непрочитанному сообщению. Я конечно не программер, но вроде работает :)
24 декабря 2011 20:51
Толик:
Не решён вопрос с онлайном на ипб 3.2
6 августа 2011 20:16
Толик:
На IPB v3.1.4 и Dle 9.3 работает как надо.

7 июня 2011 14:35
RedRat:
nikboy,
knaus-94,
попробуйте еще раз, обновили код. Там скобки не правельные были вставлены.
6 июня 2011 10:40
knaus-94:
на IP.Board v3.1.4 не работает =//
12 апреля 2011 17:40
nikboy:
а у меня ничего не появляется.. Только надпись "обновить" и все.. DLE 9.2
22 марта 2011 12:12
RedRat:
Gigabajt, wink
15 февраля 2011 14:09
Gigabajt:
о меня на скрине спалили :D
14 февраля 2011 16:12
RedRat:
Толик,
спалил название файла с дб конфигом wink
11 февраля 2011 11:34
Толик:
1) в ipb.php есть строчка

require_once ENGINE_DIR . '/data/*******.php';


хз как она нарисовалась, но должно быть

require_once ENGINE_DIR . '/data/dbconfig.php';


-Данные для блока "Кто на сайте берутся из базы сессий форума и отображают всех пользователей, которые находятся на сайте и на форуме следовательно используется один запрос


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

ЗЫ: Если не трудно, хотелось бы вытянуть отдельный модуль
-На сайт можно повесить ссылку "Обсудить на форуме" при переходе по которой автоматически создается (если нету) тема на форуме.
11 февраля 2011 00:36
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
© 2007-2011
«Клуб Админов»

Обратная связь
support@admin-club.ru

Разделы Категории Инфо Публикации
Новости Статьи О сайте Облочко Регистрация
Форум Скрипты Статистика Комментарии Вход
Почта Загрузки Реклама Артикус Пароль
Докс CMS's Правила
СЕО Шаблоны
Дизайн сайта www.artoflogic.ru Rambler's Top100