Escrevendo estatísticas de visualização no arquivo XML. Problemas possíveis com a perda de dados da contagem de dados?

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

  •  20-09-2019
  •  | 
  •  

Pergunta

Olá, criei o XML, que contém códigos para propriedades e número de visualizações de página para esse código:

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

Acho que encontrei uma possível fraqueza com isso, hoje todos os contadores decaparam e todos começaram do zero.

Este é o código que verifica a existência de código no arquivo XML e adicione +1 ou crie uma nova tag XML com 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"));

Minhas perguntas seriam:

  1. É possível que a página tenha sido aberta por outra pessoa ao mesmo tempo e o arquivo acabou de ser substituído ou de alguma forma redefinido os dados?

  2. Existe alguma outra maneira de manter o número se os visitantes da página, para que não seja redefinido no futuro?

Obrigada.

Fero

Foi útil?

Solução

Parece que você está tendo um problema de simultaneidade.

Você poderia trancar A operação de escrita, mas você deve estar ciente de que você está criando um possível gargalo no seu aplicativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top