Как я переезжал с DLE на LiveStreet (часть первая, вводная)

Добрый день. Я хочу поведать историю, как я переезжал с движка DLE на LiveStreet.
DLE я был недоволен давно — функционал слабый, нагрузку держит плохо, с плагинами и обновлением вообще беда.
Одним прекрасным днем я увидел топик, который натолкнул меня на мысль а почему бы и нет.
Этот конвертер я попытался попробовать на локальной копии сайта (бд в кодировке windows-1251 занимала 1,3 Гб), конвертор просто не работал. Он не был рассчитан на такой объем данных. И после этого я сел все переносить ручками )

Перво наперво я сел за написание скриптов по переносу основных данных:
  • Пользователи
  • Блоги
  • Модераторы и администраторы в блогах
  • Личные сообщения
  • Посты
  • Комментарии
  • Подписки к комментариям

Для начала я составил рыбу типового скрипта для переноса. Мне надо было чтобы он умел подсоединяться к двум базам, замерять время работы, конвертировать кодировку.
Итак, рыба:
<?
ignore_user_abort(true);
set_time_limit(0);

$mtime = microtime();        //Считываем текущее время
$mtime = explode(" ",$mtime);    //Разделяем секунды и миллисекунды
// Составляем одно число из секунд и миллисекунд
// и записываем стартовое время в переменную

$tstart = $mtime[1] + $mtime[0];

$dle_host        =    "localhost";
$dle_user        =    "user1";
$dle_pass        =    "pass1";
$dle_db    =    "db1";
$dle_prefix = "dle_";

$dle_id = mysql_connect($dle_host,$dle_user,$dle_pass,true) ;
mysql_select_db($dle_db, $dle_id);
mysql_set_charset('cp1251',$dle_id);

$ls_host        =    "localhost2";
$ls_user        =    "user2";
$ls_pass        =    "pass2";
$ls_db    =    "db2";
$ls_prefix = "ls_";

$ls_id = mysql_connect($ls_host,$ls_user,$ls_pass,true) ;
mysql_select_db($ls_db, $ls_id);
mysql_set_charset('utf8',$ls_id);

/*
Тут будет обработка данных. Счетчик - переменная $i
*/	


$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$totaltime = ($mtime - $tstart);//Вычисляем разницу
// Выводим не экран
printf ("Страница сгенерирована за %f секунд !", $totaltime);
print ('Обработано '.$i.' записей');

//Функция перегоняет массив в утф-8 и снимает слеши
function ArrayIconv(&$array){
	if(is_array($array))
		foreach($array as &$k)
			ArrayIconv($k);
	else
		$array = stripslashes(iconv('windows-1251','utf-8//IGNORE',$array));
	return $array;
}

Код писался быстро и для единоразового использования, поэтому это тот самый спагетти код )
В следующих постах я более подробно расскажу про каждый скрипт переноса — какие трудности и что учесть. Про сохранение аватаров и урл старых записей тоже будет ) Сам переезд сайта состоится на днях, по итогам я тоже напишу статью.

4 комментария

avatar
бд в кодировке windows-1251 занимала 1,3 Гб
ОМГ! Сколько же там контента? Миллиард статей чтоли? Или DLE настолько кривой движок?
avatar
Отнюсь, у меня на эко сайте вместе с пользователями (без картинок) бэкапы на 100mb в месяц увеличиваются (only mysql) Когда раньше юзал ДЛЕ такого не было. Благо базу сейчас храню отдельно, на выделенном сервере, но бывает авторизация тормозит по 30-40 секунд.

Для пользователей специально написал сообщение что это нормально.
avatar
avatar
Хочу тоже переехать с ДЛЕ на ЛС! Помогите
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.