Запись статистики просмотров в XML-файл.Возможные проблемы с потерей количества данных?

StackOverflow https://stackoverflow.com/questions/2273930

  •  20-09-2019
  •  | 
  •  

Вопрос

Здравствуйте, я создал XML, который содержит коды свойств и количество просмотров страниц для этого кода:

<?xml version="1.0" encoding="utf-8"?>
<data>
    <nehnutelnost code="BSPO066P">35</nehnutelnost>
     <nehnutelnost code="PMDM029P">4</nehnutelnost>
</data>

Думаю, я нашел в этом возможную слабость, сегодня все счетчики исчезли и все началось с нуля.

Это код, который проверяет наличие кода в файле XML и либо добавляет +1, либо создает новый тег XML со значением 1.

        int intSeenCount = 0;
        XDocument xmlSeenCount = new XDocument();
        xmlSeenCount = XDocument.Load(Server.MapPath(@"App_Data\lozjoCounts.xml"));

        XElement xmlElement = xmlSeenCount.XPathSelectElement("data/nehnutelnost[@code = '" + strCisloZakazky + "']");

            if (xmlElement == null)
            {
                xmlElement = (new XElement("nehnutelnost",
                                                        new XAttribute("code", strCisloZakazky),
                                                        ++intSeenCount));
                xmlSeenCount.Element("data").Add(xmlElement);
            }
            else
            {
                intSeenCount = (Convert.ToInt32(xmlElement.Value) + 1);
                xmlElement.Value = intSeenCount.ToString();
            }
            xmlSeenCount.Save(Server.MapPath(@"App_Data\lozjoCounts.xml"));

Мои вопросы будут:

  1. Возможно ли, что страница была открыта кем-то другим в то же время, а файл просто был перезаписан или каким-то образом сброшены данные?

  2. Есть ли другой способ сохранить номер посетителей страницы, чтобы он не сбрасывался в будущем?

Спасибо.

Феро

Это было полезно?

Решение

Кажется, у вас проблема с параллелизмом.

Вы могли бы замок операцию записи, но тогда вы должны знать, что вы создаете возможное узкое место в своем приложении.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top