كيف يمكنني جدولة مهام تنظيف قاعدة البيانات العادية في ASP الكلاسيكية؟
-
19-09-2019 - |
سؤال
لدي موقع ASP الكلاسيكي، يتطلب إفراغ بعض جداول قاعدة البيانات من بيانات الجلسة في جدول. لا يتلقى هذا النظام إمكانية الوصول إلى المهام المجدولة (إنه على مضيف ويب مشترك، واستخدام خادم MySQL)
كنت أفكر في استخدام global.asa
, ، لإطلاق النار من الأحداث على هذا النحو:
Application_OnStart
- حذف جميع بيانات الجلسة من قاعدة البياناتApplication_OnEnd
- حذف جميع بيانات الجلسةSession_OnStart
- إنشاء جلسة مستخدمSession_OnEnd
- احذف جميع بيانات الجلسة التي تتعلق بهذه الجلسة.
هل هناك أي سبب لماذا لا يجب علي إنشاء اتصالات قاعدة البيانات global.asa
ب سيتم إنشاء هذه وتدميرها هنا، لا مشاركت في الجلسة أو نطاق التطبيق. أراها كوسيلة لتشغيل مهام المشرف هذه مرتين لكل مستخدم (في بداية الجلسة والنهاية) وعدم إطلاقها مرة أخرى بالنسبة لهم معاسين لحركة بيانات القليل جدا من قاعدة البيانات.
أي شخص لديه أي أفكار لماذا قد يكون هذا سيئا؟ أي أسباب لعدم الاتصال بقاعدة بيانات في global.asa
?
إذا اعتقد أي شخص أن الفكرة المذكورة أعلاه هي فكرة سيئة - هل لديك أي أفكار أخرى حول كيفية تفريغ هذه الجداول بانتظام دون واحد أو أكثر من:
- مهمة مجدولة
- مهمة قاعدة البيانات المجدولة
- تشغيل التعليمات البرمجية في تحميل الصفحة لكل صفحة (وبالتالي
Session_OnStart
السنانير)
تا
كبرى جوز الهند
المحلول
سأفعل تنظيف جلسة واحدة في Session_OnEnd
ولجميع الدورات في Application_OnStart
. وبعد إذا كانت تنظيف جميع جلساتك بطيئة، فيمكنك القيام بشيء قبيح ووضع هذا التنظيف في ملف ASP منفصل تقوم بإجراء طلب HTTP لاستخدام فئة XMLHTTP، تذكر عدم انتظار الطلب لإكماله كما هو لن تبدأ يجري تقديمها قبل كل الكود Application_OnStart
يجرى.
نصائح أخرى
يمكنك كتابة صفحة ويب تفرغ جداول الجلسة، واستدعاء تلك الصفحة من مربع خارجي عبر مهمة مجدولة.
ذلك يعتمد على المدة التي ستستغرقها مهام التنظيف الخاصة بك. نظرا لأنه لن يتم تقديم طلب أثناء تشغيل Apartment_Start، فقد يتم حظره لفترة من الوقت.
علاوة على ذلك، ليس لديك أي ضمان سيتم استدعاء Application_ed_end (أو session_end) في جميع الحالات (عند إيقاف تشغيل الخادم، فقد لا يتم تشغيل بعض الفشل الكارثي قد تجاوز هذه الأحداث بالكامل).
أفضل طريقة ستكون، كما تقترح، لتشغيل مهمة مجدولة مسؤولة عن تنظيف بيانات الجلسة التي لا معنى لها.
إذا كان لديك حركة مرور ثابتة، فيمكنك الحصول على مهام صغيرة في نهاية دورة الطلب. مجرد إصدار استجابة .Flush ثم تنفيذ استعلامات DB. بالطبع تحتاج إلى الكتابة Youre Scheduler. خيار آخر هو إنشاء ملف Seperate ASP (SEAMELT) الذي تستخدمه باستخدام ServerSide، ASYNC، XMLHTTPREQ في بداية الطلب. هذا يبقي رمز التنظيف خارج دورة طلب العملاء ويقلل من الكمون.
في الواقع، لم يتم صوابا إذا لم يكن هناك بالفعل بعض WeB / API المستند إلى APP / API CLIVER CLIVER COMPROT وإذا لم يكن هناك، فيمكنك كتابة واحدة كنت نفسك، والخيارات لا نهاية لها :)