كتابة إحصائيات عرض إلى ملف 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