كيفية الحصول على قائمة بالمهام المجدولة والتشغيل الأخير يؤدي إلى Coldfusion؟

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

سؤال

نحن نحاول إنشاء لوحة معلومات لوظائف CRON ---- CF ، Java ، SqlServer ، إلخ. حتى نتمكن من معرفة متى تم تشغيل الأمور أخيرًا ، وما هي النتيجة ، وعندما يتم من المقرر أن يتم تشغيلها بعد ذلك.

هل هناك طريقة مع CFADMIN API أو بعض غير موثقة <cfschedule> خدعة للحصول على قائمة:

  1. ما هي المهام المجدولة؟
  2. ما هو آخر وقت تشغيل؟
  3. هل نجحت؟
  4. متى من المقرر أن يركض مرة أخرى؟

نحن حاليًا على 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. (إذا كنت بحاجة إلى مزيد من التفسير حول ما أعنيه بهذا ، فلا تتردد في السؤال.

آمل أن يساعد هذا إذا لم تكن قد اكتشفت ما تحتاجه بالفعل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top