كيفية الحصول على قائمة بالمهام المجدولة والتشغيل الأخير يؤدي إلى Coldfusion؟
-
22-09-2019 - |
سؤال
نحن نحاول إنشاء لوحة معلومات لوظائف CRON ---- CF ، Java ، SqlServer ، إلخ. حتى نتمكن من معرفة متى تم تشغيل الأمور أخيرًا ، وما هي النتيجة ، وعندما يتم من المقرر أن يتم تشغيلها بعد ذلك.
هل هناك طريقة مع CFADMIN API أو بعض غير موثقة <cfschedule>
خدعة للحصول على قائمة:
- ما هي المهام المجدولة؟
- ما هو آخر وقت تشغيل؟
- هل نجحت؟
- متى من المقرر أن يركض مرة أخرى؟
نحن حاليًا على CF8 ، ولكننا سنقوم بالترقية إلى CF9 في غضون بضعة أسابيع.
المحلول
لقد أجريت القليل من البحث في هذا لك. لقد وجدت مرجعًا أقدم إلى حد ما لا يزال صالحًا ، على الأقل في CF8 ويفترض أنه في CF9 أيضًا.
<cfobject type="JAVA" action="Create" name="factory" class="coldfusion.server.ServiceFactory">
<cfset allTasks = factory.CronService.listAll()/>
<cfloop index="i" from="1" to="#ArrayLen(allTasks)#">
<cfdump var="#allTasks[i]#" />
</cfloop>
من عند http://www.bpurcell.org/blog/index.cfm؟mode=entry&entry=935
هذا يجيب على أسئلتك رقم 1 و #4. بالنسبة إلى #3 ، لا يمكن أن يكون هناك إجابة على ذلك. يقوم محرك المهام المجدولة لـ Coldfusion بتحميل عنوان URL المحدد في الوقت المحدد. لا يوجد أي نجاح أو فشل - إنه ببساطة يقوم بطلب HTTP.
أتمنى أن يساعدك هذا.
نصائح أخرى
من الممكن "نشر" نتائج الوظيفة. يمكن كتابة استجابة طلب HTTP إلى خادم الملفات ، وسيكون لها قيم مهمة التشغيل الأخيرة.
<cfschedule action = "update"
task = "TaskName"
operation = "HTTPRequest"
url = "/index.cfm?action=task"
startDate = "#STARTDATE#"
startTime = "12:00:00 AM"
interval = "Daily"
resolveURL = "NO"
requestTimeOut = "600"
publish = "yes"
path = "#PATH#"
file = "log_file.log">
ثم يمكنك التحقق من السجل ضد قاعدة البيانات إذا أردت. نظرًا لأن هذا هو الاستجابة من الصفحة ، يمكنك الحصول على أخطاء وتحذيرات وتخزينها هنا أيضًا.
eric kolb صحيح - هذه هي الطريقة للقيام بذلك برمجيا. إذا كنت تريد المزيد من التحكم في كيفية تفاعل القائمة ، جرب الكود التالي (بشكل أساسي ، ولكن في CFScript):
<cfscript>
scheduledTasksArray=ArrayNew(1);
taskService=createobject('java','coldfusion.server.ServiceFactory').getCronService();
scheduledTasksArray=taskservice.listall();
أيضًا ، للإجابة رقم 2 و #3 (وهو مجرد سؤال واحد فقط من جزأين إذا قمت بذلك بشكل صحيح): عندما يتم تشغيل المهمة ، أرسل لنفسك بريدًا إلكترونيًا في الأعلى قائلاً "مرحبًا! أنا أركض! !!! " ثم يقول آخر "مهلا! لقد انتهيت !!!" في الجزء السفلي من الكود للمهمة - يمكنك إضافة طابع زمني أيضًا لمعرفة متى بدأت وتوقف (تسجيل هذا في قاعدة بيانات يعمل أيضًا). أيضًا ، لمعرفة متى سيتم تشغيله بعد ذلك ، ما عليك سوى إلقاء نظرة على آخر مرة وحقل "الفاصل" من نتائج مكالمة ServiceFactory. (إذا كنت بحاجة إلى مزيد من التفسير حول ما أعنيه بهذا ، فلا تتردد في السؤال.
آمل أن يساعد هذا إذا لم تكن قد اكتشفت ما تحتاجه بالفعل