将查看统计信息写入 XML 文件。丢失数据计数可能出现的问题?

Posted

技术标签:

【中文标题】将查看统计信息写入 XML 文件。丢失数据计数可能出现的问题?【英文标题】:Writing viewing stats to XML file. Possible problems with losing data count? 【发布时间】:2010-02-16 15:26:29 【问题描述】:

您好,我创建了 XML,其中包含该代码的属性代码和页面查看次数:

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

我想我已经找到了可能的弱点,今天所有的计数器都消失了,一切都从头开始。

这是检查 XML 文件中是否存在代码并添加 +1 或使用 1 创建新 XML 标记的代码。

        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】:

您似乎遇到了并发问题。

您可以lock 写入操作,但您必须意识到您正在为您的应用程序创建一个可能的瓶颈。

【讨论】:

以上是关于将查看统计信息写入 XML 文件。丢失数据计数可能出现的问题?的主要内容,如果未能解决你的问题,请参考以下文章

存储点击和查看统计数据的最佳方式?

云服务器重启后数据丢失情况

在c#中以编程方式查询网卡的入站/出站IPv4数据包计数统计

基于 Empty XML 示例合并丢失的 XML 记录

linux如何查看alsa是不是有数据写入

如何在不复制列标签的情况下将多个数据框写入同一张表