Задача: перенести на новую машину (LAMP) сайт с базами данных с машины с аналогичной системой.
Решение: Базы не большие поэтому посредством PHP были экспортированны в XML формат, результат переброшен на новую машину и импорт.. однако на этапе разборки XML часть информации исчезает, а именно запись вида
<entry> <name>Вася Пупкин</name> <age>20</age> <addr>123456, деревня Кукуево...</addr> </entry>
то есть в случае наличия в строке русских букв, если первая русская, то запись проходит, иначе проходят только не русские символы до первого вхождения русского, как результат адрес с указанием индекса обрезается до одного только индекса.
/* обработка содержимого тэга */ function xData($p, $data) { global $xmls; if($xmls["current_tag"]) $xmls["entry"][$xmls["current_tag"]] = $data; }
на старой машине этот код работает нормально, а на новой при обработке содержимого тэга addr функции xData передается только "123456, ".
Новая система
altlinux-server 4
php-5.2.2
apahe-1.3.37
PHP-расширения
dom
mbstring
mcrypt
mysql
suhosin
Все настроенно на UTF-8, включая mbstring и glibc самой системы.
Разборка через DOM кушает слишком много памяти и времени, соответственно вылетает по достижении лимита, того либо другого. Я уже второй день дрючу систему, а соответственно она меня, есть идеи?
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Портфолио https://www.behance.net/d4d4186e
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Портфолио https://www.behance.net/d4d4186e
Question
ket
Задача: перенести на новую машину (LAMP) сайт с базами данных с машины с аналогичной системой.
Решение: Базы не большие поэтому посредством PHP были экспортированны в XML формат, результат переброшен на новую машину и импорт.. однако на этапе разборки XML часть информации исчезает, а именно запись вида
разбирается как
то есть в случае наличия в строке русских букв, если первая русская, то запись проходит, иначе проходят только не русские символы до первого вхождения русского, как результат адрес с указанием индекса обрезается до одного только индекса.
реализован импорт посредством следующего PHP-кода
function importFile($fn) {
/* открываем файл */
if(!($fd = gzopen($fn, "br")))
return 1;
/* создаем парсер */
$p = xml_parser_create("UTF-8");
xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, 0);
/* настраеваем парсер */
xml_set_element_handler($p, "bTag", "eTag");
xml_set_character_data_handler($p, "xData");
/* читаем и разбираем файл блоками */
do {
$data = gzread($fd, 65536);
xml_parse($p, $data, feof($fd));
} while(!feof($fd));
/* освобождаем ресурсы */
gzclose($fd);
xml_parser_free($p);
return 0;
}
/* глобальная переменна для звязи функций обработчика */
$xmls = array();
/* обработка открытия тэга */
function bTag($p, $tag, $attr) {
global $xmls;
switch($tag) {
case "root":
break;
case "entry":
$xmls["current_tag"] = $tag;
$xmls["entry"] = array();
break;
default:
$xmls["entry"][$xmls["current_tag"]] = "";
}
}
/* обработка закрытия тэга */
function eTag($p, $tag, $attr) {
global $xmls;
switch($tag) {
case "root":
break;
case "entry":
if($xmls["entry"]) {
inser_to_db($xmls["entry"]);
}
$xmls["current_tag"] = false;
$xmls["entry"] = false;
break;
default:
$xmls["entry"][$xmls["current_tag"]] = false;
}
}
/* обработка содержимого тэга */
function xData($p, $data) {
global $xmls;
if($xmls["current_tag"])
$xmls["entry"][$xmls["current_tag"]] = $data;
}
на старой машине этот код работает нормально, а на новой при обработке содержимого тэга addr функции xData передается только "123456, ".
Новая система
altlinux-server 4
php-5.2.2
apahe-1.3.37
PHP-расширения
dom
mbstring
mcrypt
mysql
suhosin
Все настроенно на UTF-8, включая mbstring и glibc самой системы.
Разборка через DOM кушает слишком много памяти и времени, соответственно вылетает по достижении лимита, того либо другого. Я уже второй день дрючу систему, а соответственно она меня, есть идеи?
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.