[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сохранение в XML-файлы.
Dimka-zlodey
Давиче сделал я на свой сайтик запись статистики посещений с сохранением данных в XML. Ну вот все мне понравилось, пока не случилась хрень. Однажды зашел на сайт, а тамма ошибка XML светится. Суть её в том что в файле оказался огрызок тэга вот такого вида:

<?xml version="1.0" encoding="UTF-8"?>
<visitors>
<visitor>

...
</visitor>
<visitor>

...
</visitor>
<visitor>

...
</visitor>
</visitors>

/visitors>

Так подозреваю, что это могло случиться если два посетителя одновременно зашли на сайт.
так или не так? Как быть? У кого было как решили?
Впринципе можно решить это записью в разные файлы, но може есть просто какоето распределение по времени?



Спустя 16 минут, 18 секунд (9.10.2010 - 13:49) vasa_c написал(а):
Цитата
так или не так?

Вполне возможно, что и так.
Хотя не менее вероятно, что и не так.

http://ru.php.net/flock

Спустя 30 минут, 49 секунд (9.10.2010 - 14:19) Dimka-zlodey написал(а):
Цитата (vasa_c @ 9.10.2010 - 10:49)
Цитата
так или не так?

Вполне возможно, что и так.
Хотя не менее вероятно, что и не так.

http://ru.php.net/flock

Тему flock() я смотрел. Но файлы сохраняются по средством библиотеки simplexml.
Там нет дескриптора файла. Он просто сохраняется на "честное слово".
Если есть возможность его применить то я только за, но как????!!!

Спустя 57 минут, 8 секунд (9.10.2010 - 15:17) vasa_c написал(а):
Как именно сохраняете через simplexml?

Спустя 1 день, 22 часа, 3 минуты, 3 секунды (11.10.2010 - 13:20) Dimka-zlodey написал(а):
Как везде и предлагают
$xml->asxml("file.xml");


Спустя 15 минут, 47 секунд (11.10.2010 - 13:35) vasa_c написал(а):
Попробуйте получить строку через $xml->asxml() и уже самостоятельно сохранить в файл с блокировкой.

Спустя 1 минута, 14 секунд (11.10.2010 - 13:37) vasa_c написал(а):
Не обязательно через flock, можно через file_put_contents с нужным флагом.

Спустя 35 минут, 8 секунд (11.10.2010 - 14:12) Dimka-zlodey написал(а):
Спасибо. С такой штукой еще дела не имел, попробую.

Спустя 1 день, 7 часов, 20 минут, 34 секунды (12.10.2010 - 21:32) GRean написал(а):
А будет ли работать flock вот в такой конструкии ?

$file = 'xml.xml';

$xmlstr = file_get_contents($file);

flock($xmlstr,LOCK_EX);

$xml = new SimpleXMLElement($xmlstr);

foreach($xml as $node){
if($node->getName() == 'action'){

$count = (integer)$node;

$node[0][0] = ++$count;
}
}

$xml->asXml($file);
flock($xmlstr,LOCK_UN);
fclose($xmlstr);


Вопрос интересен тем, что хочу сделать модуль для комментариев на xml основе. И вдруг два пользователя одновременно нажмут на кнопку сохранения, не сотрутся ли данные внутри xml?

Спустя 10 часов, 57 минут, 54 секунды (13.10.2010 - 08:30) linker написал(а):
А чем БД не подходит?

Спустя 2 часа, 14 минут, 45 секунд (13.10.2010 - 10:45) GRean написал(а):
Цитата (linker @ 13.10.2010 - 05:30)
А чем БД не подходит?

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

Спустя 4 минуты, 49 секунд (13.10.2010 - 10:50) linker написал(а):
Хм, странно, я бы понял если бы бесплатный хостер не давал БД, а то... Сунулся бы сразу в БД, то не имел бы сейчас таких проблем и танцев с бубном.

Спустя 14 минут, 59 секунд (13.10.2010 - 11:05) GRean написал(а):
Цитата (linker @ 13.10.2010 - 07:50)
Хм, странно, я бы понял если бы бесплатный хостер не давал БД, а то... Сунулся бы сразу в БД, то не имел бы сейчас таких проблем и танцев с бубном.

ага, вот и сижу учу мускул. Прийдется переделывать сайт, он полностью xml smile.gif

Спустя 2 часа, 48 минут, 50 секунд (13.10.2010 - 13:54) Dimka-zlodey написал(а):
Если сказать честно, то фигня вопрос и переделать и под "обыкновенные" текстовые файлы и с мускулом проблем нет. Просто мне нравится организация в XML да и данные с них проще скатывать для разных платформ. К тому же XML это мировой стандарт хранения данных, нужно шагать в ногу со временем! smile.gif)

Спустя 14 минут, 3 секунды (13.10.2010 - 14:08) linker написал(а):
А MSSQL, MySQL, PostgreSQL, Oracle не мировые стандарты хранения данных? XML подходит исключительно для простых данных, без связей и прочих крутых заморочек с индексами, хранимыми процедурами, триггерами, вьюхами и т.д.

Спустя 11 минут, 31 секунда (13.10.2010 - 14:19) Dimka-zlodey написал(а):
Несомненномировые и самые популярные. Только вот они требуют дополнительную платформу хранения. Надо завадить целую базу на хостинге а xml файлы это просто текстовые файлы. Нееее, я не спорю что XML лучше.Хотя при помощи XPATH() можно выборки делать с XML файлов. И там и там есть свой гемор. Это на вкус и цвет ну и конечно смотря на поставленную задачу.

Спустя 5 минут, 46 секунд (13.10.2010 - 14:25) linker написал(а):
Именно на поставленную задачу.

Спустя 9 минут, 59 секунд (13.10.2010 - 14:35) Dimka-zlodey написал(а):
Задача поставлена сделать учет статистики с сохранением в формате XML.
Я сейчас создаю цельную базу данных местных магазинов. Так сказать локальный myspace для нашего торгующего контингента. Аналог в MySQL-е я уже делал. Теперь интересны другие методы хранения и обработки данных.

Спустя 18 минут, 47 секунд (13.10.2010 - 14:54) vasa_c написал(а):
XML - стандарт передачи данных, а не хранения.

Спустя 40 минут, 14 секунд (13.10.2010 - 15:34) linker написал(а):
vasa_c
Именно хранения, он просто удобен для передачи, вот потому им и пользуются под это дело. А так изначально, повторюсь, как хранения данных.

Спустя 18 часов, 57 минут, 1 секунда (14.10.2010 - 10:31) Dimka-zlodey написал(а):
Должен подтвердить Linker-а: для передачи данных XML довольно ёмкий из-за тэгов.

Спустя 55 минут, 12 секунд (14.10.2010 - 11:26) arvitaly написал(а):
Цитата
Должен подтвердить Linker-а: для передачи данных XML довольно ёмкий из-за тэгов.


А кто не емкий?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.