Помощь Проблема с БД

Тема в разделе "DLE", создана пользователем Pigini, 16 янв 2011.

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

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

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

    Pigini

    Регистр.:
    28 апр 2009
    Сообщения:
    173
    Симпатии:
    29
    1. DLE 8.5
    2. Nulled MID
    3. Проблема - удаляются записи в БД после сброса кеша.
    (выяснил - когда удаляется /engine/cache/system/cron.php, то удаляется часть пользователей)

    Началось с того что база делала большую нагрузку и хостер дал день ну устранение проблемы.
    Что только не перепробовал. В итоге я удалил все пустые таблицы в БД и тут то началось.
    При регистрации общее количество все время уменьшалось - то есть 1 пользователь зарегистрировался и в dle_user если было 3000, то становилось 2999 записей.
    Не понимаю что там удалялось, но все последние 100 пользователей из 3000 точно не остались.

    Теперь все удаленные таблицы восстановил и попробовал взять старую таблицу dle_user + импортировал новых пользователей, в итоге - 3050 записей в dle_users, НО, после удаление кеша, в dle_user 2080 записей.

    В чем проблема?

    Если кеш просто удалить с папки cashe, то так же с таблицы dle_users пропадают 70 пользователей.
    Получается что где то прописано общее количество пользователей, или как?
     
  2. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.175
    Симпатии:
    423
    глянь настройки сайта->Настройки для пользователей->Максимальное количество зарегистрированных пользователей\
     
  3. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.024
    Симпатии:
    694
    попробуй сделать ремонт БД в админке + оптимизацию БД. Если ремонт не поможет - то тогда только придется все удалять, ставить заново двиг и восстанавливать все данные с бекапа...
    На будущее - даже если таблица сейчас и пустая, но её установил дле при установки - это не значит что их можно удалять, если бы они не использовались двигом - он бы их не ставил для просто так ;)
     
  4. Pigini

    Pigini

    Регистр.:
    28 апр 2009
    Сообщения:
    173
    Симпатии:
    29
    Ограничение не установлено.

    Оптимизацию и ремонт делал, но не помогает.
    Все работает прекрасно и пользователи все считаются, пока не сбросить кешь сайта.
    Значит при новом кеширование куда то скрипт смотрит в базу, где прописано сколько людей всего и сбрасывает в таблицу dle_users лишних.

    Кто умный - при сбрасывание кеша, куда движек запросы дает?

    P.S. как удаляется понятно -
    PHP:
    if( $_GET['action'] == "clear" ) {
        
        
    $fdir opendirENGINE_DIR '/cache/system/' );
        while ( 
    $file readdir$fdir ) ) {
            if( 
    $file != '.' and $file != '..' and $file != '.htaccess' ) {
                @
    unlinkENGINE_DIR '/cache/system/' $file );
            
            }
        }
        
        
    clear_cache();
    }
    Но почему при удаление кеша удаляются записи из таблицы dle_users?
     
  5. UnFeeLing

    UnFeeLing Создатель

    Регистр.:
    1 июн 2007
    Сообщения:
    31
    Симпатии:
    2
    Администрирование->Основные настройки->Оптимизация запросов к базе данных...

    Покажите ваши настройки
     
  6. Pigini

    Pigini

    Регистр.:
    28 апр 2009
    Сообщения:
    173
    Симпатии:
    29

    Выберите тип поиска используемого на сайте: Простой
    Включить поддержку регистрации и авторизации на сайте: Да
    Включить кеширование на сайте: Да
    Включить поддержку мультикатегорий на сайте: Да
    Поддержка публикации новостей на еще не наступившую дату: Да
    Включить поддержку фиксации новостей на сайте: Да
    Включить счетчик просмотров новостей: Да
    Кешировать счетчик просмотров новостей: Да
    Разрешить пользователям менять порядок сортировки новостей на сайте: Да

    Все остальное - Нет
     
  7. UnFeeLing

    UnFeeLing Создатель

    Регистр.:
    1 июн 2007
    Сообщения:
    31
    Симпатии:
    2
    Включить кеширование на сайте: Нет
    Кешировать счетчик просмотров новостей: Нет
    Разрешить пользователям менять порядок сортировки новостей на сайте: Нет

    так попробуйте, либо возьмите и скопируйте стандартные настройки DLE, файлик config.php, патом попробуйте почистить хеш на сайте
     
  8. Pigini

    Pigini

    Регистр.:
    28 апр 2009
    Сообщения:
    173
    Симпатии:
    29
    Все отлично до того времени, пока не очищаю кеш.
    Сразу удаляются часть пользователей с базы..

    Даже если руками пробовать удалять кеш..
    Понял от куда все!

    Если в кеше удалять руками файлы то все ок, кеш обновляется, КРОМЕ -
    /engine/cache/system/cron.php
    Если его удалить то удаляется часть пользователей в dle_users.
    Права стоят 666

    вот файл /engine/modules/cron.php, как я понимаю, именно он кеш тот и делает, при удаление которого удаляется часть пользователей
    PHP:
    if( ! defined'DATALIFEENGINE' ) ) {
        die( 
    "Hacking attempt!" );
    }

    set_vars"cron"$_TIME );

    if( 
    $config['cache_count'] ) {
        
    $result $db->query"SELECT COUNT(*) as count, news_id FROM " PREFIX "_views GROUP BY news_id" );
        
        while ( 
    $row $db->get_array$result ) ) {
            
            
    $db->query"UPDATE " PREFIX "_post set news_read=news_read+{$row['count']} where id='{$row['news_id']}'" );
        
        }
        
        
    $db->free$result );
        
    $db->query"TRUNCATE TABLE " PREFIX "_views" );
        
    clear_cache'news_' );
    }

    if( 
    $cron == ) {
        
        
    $db->query"DELETE FROM " USERPREFIX "_banned WHERE days != '0' AND date < '$_TIME' AND users_id = '0'" );
        @
    unlinkENGINE_DIR '/cache/system/banned.php' );
        
        
    $sql_cron $db->query"SELECT news_id, action FROM " PREFIX "_post_log WHERE expires <= '" $_TIME "'" );
        
        while ( 
    $row $db->get_row$sql_cron ) ) {

            if ( 
    $row['action'] == ) {

                
    $db->query"UPDATE " PREFIX "_post SET approve='0' WHERE id='{$row['news_id']}'" );
        
            } elseif ( 
    $row['action'] == ) {

                
    $db->query"UPDATE " PREFIX "_post SET allow_main='0' WHERE id='{$row['news_id']}'" );

            } elseif ( 
    $row['action'] == ) {

                
    $db->query"UPDATE " PREFIX "_post SET fixed='0' WHERE id='{$row['news_id']}'" );
        
            } else {
            
                
    $db->query"DELETE FROM " PREFIX "_comments WHERE post_id='{$row['news_id']}'" );
                
    $db->query"DELETE FROM " PREFIX "_poll WHERE news_id='{$row['news_id']}'" );
                
    $db->query"DELETE FROM " PREFIX "_poll_log WHERE news_id='{$row['news_id']}'" );
                
    $db->query"DELETE FROM " PREFIX "_tags WHERE news_id = '{$row['news_id']}'" );
                
    $db->query"DELETE FROM " PREFIX "_post WHERE id='{$row['news_id']}'" );
                
                
    $row_1 $db->super_query"SELECT images  FROM " PREFIX "_images where news_id = '{$row['news_id']}'" );
                
                
    $listimages explode"|||"$row_1['images'] );
                
                if( 
    $row_1['images'] != "" ) foreach ( $listimages as $dataimages ) {
                    
    $url_image explode"/"$dataimages );
                    
                    if( 
    count$url_image ) == ) {
                        
                        
    $folder_prefix $url_image[0] . "/";
                        
    $dataimages $url_image[1];
                    
                    } else {
                        
                        
    $folder_prefix "";
                        
    $dataimages $url_image[0];
                    
                    }
                    
                    @
    unlinkROOT_DIR "/uploads/posts/" $folder_prefix $dataimages );
                    @
    unlinkROOT_DIR "/uploads/posts/" $folder_prefix "thumbs/" $dataimages );
                }
                
                
    $db->query"DELETE FROM " PREFIX "_images WHERE news_id = '{$row['news_id']}'" );
                
                
    $getfiles $db->query"SELECT id, onserver FROM " PREFIX "_files WHERE news_id = '{$row['news_id']}'" );
                
                while ( 
    $row_1 $db->get_row$getfiles ) ) {
                    
                    @
    unlinkROOT_DIR "/uploads/files/" $row_1['onserver'] );
                
                }
                
    $db->free$getfiles );
                
                
    $db->query"DELETE FROM " PREFIX "_files WHERE news_id = '{$row['news_id']}'" );

            }
        
        }
        
        
    $db->query"DELETE FROM " PREFIX "_post_log WHERE expires <= '" $_TIME "'" );
        
        
    $db->free$sql_cron );
        
        if( 
    intval$config['max_users_day'] ) ) {
            
    $thisdate $_TIME - ($config['max_users_day'] * 3600 24);
            
            
    $sql_result $db->query"SELECT name, user_id, foto FROM " USERPREFIX "_users WHERE lastdate < '$thisdate' and user_group = '4'" );
            
            while ( 
    $row $db->get_row$sql_result ) ) {

                
    $db->query"DELETE FROM " USERPREFIX "_pm WHERE user_from = '{$row['name']}' AND folder = 'outbox'" );
                
    $db->query"DELETE FROM " USERPREFIX "_pm WHERE user='{$row['user_id']}'" );
                
    $db->query"DELETE FROM " USERPREFIX "_banned WHERE users_id='{$row['user_id']}'" );
                
    $db->query"DELETE FROM " USERPREFIX "_users WHERE user_id = '{$row['user_id']}'" );
                @
    unlinkROOT_DIR "/uploads/fotos/" $row['foto'] );
            }

            
    $db->free$sql_result );
            
        }
        
        if( 
    intval$config['max_image_days'] ) ) {
            
    $thisdate $_TIME - ($config['max_image_days'] * 3600 24);
            
            
    $db->query"SELECT images  FROM " PREFIX "_images where date < '$thisdate' AND news_id = '0'" );
            
            while ( 
    $row $db->get_row() ) {
                
                
    $listimages explode"|||"$row['images'] );
                
                if( 
    $row['images'] != "" ) foreach ( $listimages as $dataimages ) {
                    
    $url_image explode"/"$dataimages );
                    
                    if( 
    count$url_image ) == ) {
                        
                        
    $folder_prefix $url_image[0] . "/";
                        
    $dataimages $url_image[1];
                    
                    } else {
                        
                        
    $folder_prefix "";
                        
    $dataimages $url_image[0];
                    
                    }
                    
                    @
    unlinkROOT_DIR "/uploads/posts/" $folder_prefix $dataimages );
                    @
    unlinkROOT_DIR "/uploads/posts/" $folder_prefix "thumbs/" $dataimages );
                }
            
            }
            
            
    $db->free();
            
            
    $db->query"DELETE FROM " PREFIX "_images where date < '$thisdate' AND news_id = '0'" );
        
        }
        
        
    clear_cache();

    }


    ---------- Post added at 01:42 ---------- Previous post was Вчера at 23:58 ----------

    Перезалил файл /engine/modules/cron.php и проблема пропала.
    Всем спасибо за содействие!
     
Статус темы:
Закрыта.