Помощь число пользователей и кеширование..

Тема в разделе "DLE", создана пользователем eXcelsior, 13 апр 2009.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. eXcelsior

    eXcelsior Постоялец

    Регистр.:
    3 авг 2008
    Сообщения:
    53
    Симпатии:
    5
    1. Версия ДЛЕ 7.5
    2. Нуллид ТИМ
    3.
    Поставил хак..или мод.. кароче показывает сколько пользователей зарегистрировалось...

    но при каждой загрузке 1 запрос!

    вот содержимое мода -
    Код:
    <?php
    if(!defined('DATALIFEENGINE')) {
    	die("Hacking attempt!");
    }
    
    // Запрос "Всего пользователей"
    $stats_users = get_vars("stats_users");
    $row = $db->super_query("SELECT COUNT(*) as count FROM " . USERPREFIX . "_users");
    $stats_users = $row['count'];
    set_vars ("stats_users", $stats_users);
    ?>
    можно ли его кешировать ... что бы обновлялся 1 раз в 4 часа..
     
  2. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    461
    Симпатии:
    116
    PHP:
    <?php
    if(!defined('DATALIFEENGINE'))
    {
      die(
    "Hacking attempt!");
    }

    if(
    get_vars("memberlist_cron") > $_TIME 432000// 5 days
    {
        
    $lastupdate get_vars("memberlist_cron");
        
    $memberlist get_vars("memberlist");
    }
    else
    {

    if (!
    $memberlist) {

    CODEHERE =

    set_vars("memberlist_cron"$_TIME);
    set_vars("memberlist"$memberlist);
    }

    ?>
    надеюсь, освоишь
     
  3. eXcelsior

    eXcelsior Постоялец

    Регистр.:
    3 авг 2008
    Сообщения:
    53
    Симпатии:
    5
    простите конечно.. но как соеденить 2 кода этих?
     
  4. rider1203

    rider1203

    Регистр.:
    4 авг 2008
    Сообщения:
    242
    Симпатии:
    58
    Думаю что так

    Код:
    <?php
    if(!defined('DATALIFEENGINE'))
    {
      die("Hacking attempt!");
    }
    
    if(get_vars("memberlist_cron") > $_TIME - 432000) // 5 days
    {
        $lastupdate = get_vars("memberlist_cron");
        $memberlist = get_vars("memberlist");
    }
    else
    {
    
    if (!$memberlist) {
    
    // Запрос "Всего пользователей"
    $stats_users = get_vars("stats_users");
    $row = $db->super_query("SELECT COUNT(*) as count FROM " . USERPREFIX . "_users");
    $stats_users = $row['count'];
    set_vars ("stats_users", $stats_users);
    
    set_vars("memberlist_cron", $_TIME);
    set_vars("memberlist", $memberlist);
    }
    
    ?> 
     
  5. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    461
    Симпатии:
    116
    PHP:
    <?php
    if(!defined('DATALIFEENGINE'))
    {
      die(
    "Hacking attempt!");
    }

    if(
    get_vars("stats_users_cron") > $_TIME 432000// 5 days
    {
        
    $lastupdate get_vars("stats_users_cron");
        
    $stats_users get_vars("stats_users");
    }
    else
    {

    if (!
    $stats_users) {

    $row $db->super_query("SELECT COUNT(*) as count FROM " USERPREFIX "_users");
    $stats_users $row['count'];

    $db->free();

    set_vars("stats_users_cron"$_TIME);
    set_vars("stats_users"$stats_users);
    }

    ?> 
     
  6. eXcelsior

    eXcelsior Постоялец

    Регистр.:
    3 авг 2008
    Сообщения:
    53
    Симпатии:
    5
    Спасибо за помощь, НО не работает...

    в варианте rider1203 ошибка в 27 строке
    в варианте Demon425 в 26 ...
     
  7. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    461
    Симпатии:
    116
    Пробуй так:

    PHP:
    <?php
    if(!defined('DATALIFEENGINE'))
    {
      die(
    "Hacking attempt!");
    }

    if(
    get_vars("stats_users_cron") > $_TIME 432000// 5 days
    {
        
    $lastupdate get_vars("stats_users_cron");
        
    $stats_users get_vars("stats_users");
    }
    else
    {

    if (!
    $stats_users) {

    $row $db->super_query("SELECT COUNT(*) as count FROM " USERPREFIX "_users");
    $stats_users $row['count'];

    $db->free();

    set_vars("stats_users_cron"$_TIME);
    set_vars("stats_users"$stats_users);
    }
    }
    ?> 
    не была закрыта скобка :-(
     
  8. eXcelsior

    eXcelsior Постоялец

    Регистр.:
    3 авг 2008
    Сообщения:
    53
    Симпатии:
    5
    Спасибо... так ошибки нету...

    только можно разьеснить ? - это кеширование уберает запрос при каждом обновление страницы?
    Если пользователь зарегистрировался, то счетчик изменится или только через 5 дней?
    Код:
     if(get_vars("stats_users_cron") > $_TIME - 432000) // 5 days
     
  9. best

    best

    Регистр.:
    12 апр 2006
    Сообщения:
    246
    Симпатии:
    54
    Да, до тех пор пока кеширование не потел=ряет актуальность.
    только по истечению 5 дней. Если сайт посещаемый и регятся много народу то постать - 3-4 часа. Если просто посещаемый - 1 день. Запрос выполнится для создания кэша 1 раз. Так что можешь время сам выбирать. Оно указанов nix формате.
     
  10. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    461
    Симпатии:
    116
    PHP:
    if(get_vars("stats_users_cron") > $_TIME 432000// проверяем дату кеша
    {
    если кеш новенькийполучаем данные из него
    }
    else
    {
    иначе делаем запрос и перезаписываем кеш
    }
    }
    432000 - 5 дней
    86400 - 1 день
    3600 - 1 час и т.д.

    можно поставить 1 час, но я бы рекомендовал поставить 1 день, незачем базу грузить.
     
Статус темы:
Закрыта.