Домой Каталог: Дополнения WP-Recall Private Message Экспорт сообщений из старого в новый
22ответ(ов) в теме
Shtirlitz
не в сети 3 года
На сайте с 20.07.2013
Участник
Тем 83
Сообщения 357
1
19:42

Старая тема закрыта (не мудрено, 8 мес назад отложил дела на потом, вот руки дошли наконец), оставлю ремарку,

Вы не можете просматривать опубликованные ссылки

$number = 3000;//кол-во обрабатываемых сообщений за один проход
Я проверил работу скрипта на локальном сервере, в результате было обработано 17 тыс. сообщений и создано около 1,5 тыс. чатов, скрипт отработал нормально.

Оценил масштаб своей базы данных - порядка 369500 сообщений в личках. У меня загрузка страницы экспорта остановилась на цифре 22, это когда я уже снизил кол-во обрабатываемых сообщений до 500 на сайте для тестов, цель не была достигнута .../?transfer_old_messages=go&transfer_page=22

Из решений - могу попробовать снизить аж до 300 сообщений за один проход, но видимо, в этом нет смысла, ведь скрипт работает и в итоге через некоторые время вырубится?
Либо у меня на нормальном сервере будет все нормально, там помощнее, чем на тест-площадке на джино.ру

0
Вова (Otshelnik-Fm)
не в сети 4 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18642
2
20:02

Вопрос в том сможет ли хостинг за раз пройти 3000? Зависит от параметра в php.ini max_execution_time - время работы скрипта. На моем сайте оно равно 30 секундам

Вы не можете просматривать опубликованные ссылки

И соответственно как шустро он будет перебирать за эти 30 секунд - ответа нет. Каждый сервер по разному.

0
Андрей CS
не в сети 5 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16854
3
20:24

судя по вашему репорту было обработано только 11 тыс. сообщений, это не так много для нормального хостинга, а вот порядка 400 тыс. сообщений уже могут вызвать проблемы. Ограничения на кол-во сообщений в чатах не установлено? Лучше установить, подождать сутки, чтобы отработало удаление старых сообщений, а потом производить перенос.

0
Shtirlitz
не в сети 3 года
На сайте с 20.07.2013
Участник
Тем 83
Сообщения 357
4
17:59

Стоит ограничение на 150 сообщений и в новом и старом чате. Залез в бд, ужаснулся:
82 мб на 369 тыс. строк

Вы не можете просматривать опубликованные ссылки

Вывод - не чистятся сообщения и захламляется бд

0
Андрей CS
не в сети 5 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16854
5
18:16

Shtirlitz сказал(а)
Вывод - не чистятся сообщения и захламляется бд

вывод - не надо отключать ограничение на кол-во сообщений в переписке

0
Вова (Otshelnik-Fm)
не в сети 4 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18642
6
18:16

Я тут о кроне писал

Вы не можете просматривать опубликованные ссылки

- скорее всего он у вас отключен

0
Shtirlitz
не в сети 3 года
На сайте с 20.07.2013
Участник
Тем 83
Сообщения 357
7
21:32

Otshelnik-Fm сказал(а)

Я тут о кроне писал

Вы не можете просматривать опубликованные ссылки

- скорее всего он у вас отключен

А можно уточнить, как звучит (хук для крона) чистка старых сообщений? В Advanced Cronе Manager смотрю, но названия мне ничего особого не говорят

0
Вова (Otshelnik-Fm)
не в сети 4 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18642
8
21:39

Я точно не помню как там в 15й версии, вроде daily (раз в сутки который отрабатывает) но ничего страшного не случится если вы все события крона начинающиеся на rcl_cron_ выполните - запустите все что можно

0
Shtirlitz
не в сети 3 года
На сайте с 20.07.2013
Участник
Тем 83
Сообщения 357
9
21:48

Otshelnik-Fm сказал(а)

Я точно не помню как там в 15й версии, вроде daily (раз в сутки который отрабатывает) но ничего страшного не случится если вы все события крона начинающиеся на rcl_cron_ выполните - запустите все что можно

daily_schedule_notify_user
wp_scheduled_auto_draft_delete
_cron_subscribe_reloaded_purge
rcl_cron_daily_schedule
itsec_purge_logs
wp_scheduled_delete (?)
quick_chat_target_clean_update
daily_delete_notifications

Ок, продолжу изучение, что там не так

0
Вова (Otshelnik-Fm)
не в сети 4 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18642
10
23:16

daily_schedule_notify_user - вроде от дополнения уведомлений
rcl_cron_daily_schedule - один раз в день срабатываемое задание. Видимо оно вам и нужно
daily_delete_notifications - возможно тоже от допа уведомлений.
- остальные это что-то стороннее.

Но в 16й версии (да вроде и в 15й все это было приведено к единому стандарту) WP-Recall и допы которые работают с 16-й версией все крон задачи имеют префикс rcl_cron_
Поэтому после перехода на 16ю версию можете смело удалять вышеназванные мной планы крона (если они кем то будут нужны - восстановятся после переактивации плагина. Но по моему это оставшиеся в бд "хвосты")

upd: если это "хвосты" от WP-Recall, то явно от версии младше 14й. Вот

Вы не можете просматривать опубликованные ссылки

что крон задачи приведены в единый вид (3 февраля 2016)

0
Вова (Otshelnik-Fm)
не в сети 4 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18642
11
21:16

Вижу вы задание опубликовали... А сами то можете ответить - крон у вас работает?

Работа крона определяется например так: вы видите что на странице дополнений есть их обновления.
Потому как я писал в статье, ссылку на которую давал - крон может быть отключен вами через конфиг (раздел "В чем причины")

0
Shtirlitz
не в сети 3 года
На сайте с 20.07.2013
Участник
Тем 83
Сообщения 357
12
10:12

Крон работает:
WP-recall: Вы используете версию 15.1.9. Обновить до 16.0.8.

На странице аддонов: 19 штук+шаблон просит обновлений.
Доступная свежая версия Across Ocean 3.1. смотреть информацию о версииили обновиться автоматически
Доступная свежая версия Add News WP-Recall FULL (Объявление в личном кабинете) 4.7.
Доступная свежая версия Comments Tuner 1.4.4.

и т.д.
В конфиге нет никаких упоминаний о кроне.

1
Вова (Otshelnik-Fm)
не в сети 4 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18642
13
10:17

ок. Значит крон у вас все-таки работает. Это хорошо. Плохо что не удаляет из чата.

0
Андрей CS
не в сети 5 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16854
14
10:26

сейчас никто не сможет ответить почему сообщения не удаляются по крону, тк мы говорим о работе дополнения Private Message Wp-Recall, которое уже давно не поддерживается и не дорабатывается. Если бы попытка миграции сообщений была сделана своевременно, то возможно, проблемы бы и не было, что заставило ждать почти год - непонятно.

0
Андрей CS
не в сети 5 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16854
15
11:21

Как вариант, можно попробовать произвести миграцию сообщений добавленных только за последний год или два, тогда объем переносимых сообщений должен быть гораздо меньше. Для этого в скрипте миграции приведенном тут

Вы не можете просматривать опубликованные ссылки

следует изменить строку

 $messages = $wpdb->get_results("SELECT * FROM ".RCL_PREF."private_message ORDER BY author_mess DESC LIMIT $offset,$number");

до такого вида

 $messages = $wpdb->get_results("SELECT * FROM ".RCL_PREF."private_message 
WHERE time_mess > date_sub('".current_time('mysql')."', interval 1 YEAR) ORDER BY author_mess DESC LIMIT $offset,$number");

0
Shtirlitz
не в сети 3 года
На сайте с 20.07.2013
Участник
Тем 83
Сообщения 357
16
18:06

Привело к
САЙТ/?transfer_old_messages=go&transfer_page=38
1500 сообщений на проход уходило

белая стр-ца с текстом в итоге:
Catchable fatal error: Object of class WP_Error could not be converted to string in /***/wp-content/plugins/wp-recall/add-on/rcl-chat/class-rcl-chat.php on line 117

0
Андрей CS
не в сети 5 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16854
17
18:10

белая страница по завершению миграции или вообще на сайте? в БД сообщения были добавлены?

0
Shtirlitz
не в сети 3 года
На сайте с 20.07.2013
Участник
Тем 83
Сообщения 357
18
19:37

По завершению миграции.
Не вижу логики копирования, что мои сообщения не видны в переписке с теми контактами, что добавились, скажем, мой id 1581, я вижу то, что мне отправил id 9223, а моих постов нет. Или переписка с id 1092 - вообще ни одного поста

0
Андрей CS
не в сети 5 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16854
19
19:53

я не знаю, сколько сообщений было перенесено и за какой период, не могу сказать была ли миграция успешна.
я предложил вариант решения проблемы, возможно и не самый лучший, код миграции есть, можете править его под себя и решать задачу, или подождать еще 8 месяцев - может само уляжется. А вообще, не надо было идти на поводу у юзеров, еще 8 месяцев назад надо было отключать старый чат, было бы пару дней нытья, зато сейчас не было бы такой проблемы.

0
Shtirlitz
не в сети 3 года
На сайте с 20.07.2013
Участник
Тем 83
Сообщения 357
20
07:03

Тогда не перенеслись сообщения на тестовой площадке, потому я и не стал трогать, пока работало. Ладно, пошел экспериментировать.

0
Shtirlitz
не в сети 3 года
На сайте с 20.07.2013
Участник
Тем 83
Сообщения 357
21
19:05

Знакомый программист помог перенести сообщения за два года и 5 минут работы скрипта следующим скриптом:

add_action('wp','rcl_init_transfer_old_messages');
function rcl_init_transfer_old_messages(){
    if(isset($_GET['transfer_old_messages'])){
        $page = (isset($_GET['transfer_page']))? $_GET['transfer_page']: 1;
        rcl_transfer_old_messages($page);
    }
	//print 'ok';
}

function rcl_transfer_old_messages($page){

    global $wpdb;
    
    $number = 37000;//кол-во обрабатываемых сообщений за один проход
    
    $offset = ($page - 1) * $number; 
	
	file_put_contents(__DIR__ .'/transfer_old_messages', $offset."

");

$messages = $wpdb->get_results("SELECT * FROM ".RCL_PREF."private_message 
WHERE time_mess > date_sub('".current_time('mysql')."', interval 2 YEAR) ORDER BY author_mess DESC LIMIT $offset,$number");

    if(!$messages) wp_die('Сообщений больше нет! <a href="'.get_bloginfo('wpurl').'">На главную</a>');
    
    require_once RCL_PATH.'/add-on/rcl-chat/class-rcl-chat.php';

    $old_room = false;
    foreach($messages as $message){

        $chat_room = rcl_get_private_chat_room($message->author_mess,$message->adressat_mess);

        if($chat_room!=$old_room){
            $chat = new Rcl_Chat(array('chat_room'=>$chat_room,'chat_status'=>'private','user_id'=>$message->author_mess));
        }

        $result = rcl_insert_old_message($chat,$message);

        if(!$result) wp_die('Возникла ошибка!');

        $old_room = $chat_room;

    }
    
    $nextpage = $page + 1;
    file_put_contents(__DIR__ .'/transfer_old_messages', "ok

");
    wp_redirect(get_bloginfo('wpurl').'?transfer_old_messages=go&transfer_page='.$nextpage); exit;
	
} 

function rcl_insert_old_message($chat,$message){
    global $wpdb;

    $key = explode(':',$chat->chat_room);
    $private_key = ($key[1]==$message->author_mess)? $key[2]: $key[1];

    $message = array(
                'chat_id'=>$chat->chat_id,
                'user_id'=>$message->author_mess,
                'message_content'=>$message->content_mess,
                'message_time'=>$message->time_mess,
                'private_key'=>$private_key,
                'message_status'=>1,
            );

    $result = $wpdb->insert(
        RCL_PREF.'chat_messages',
        $message
    );

    return $result;
}

1
Андрей CS
не в сети 5 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16854
22
19:44

Поздравляю.

0
Тема закрыта. Публикация новых сообщений запрещена.