Я знаю, что это старый вопрос сейчас, но я продолжал возвращаться сюда, потому что мне нужно было подобное решение (только для меня это был 10-секундный интервал), и ни один из этих ответов не сработал.Сегодня я наконец-то нашел способ, который я решил опубликовать на тот случай, если кто-нибудь окажется в подобной привязке.
Я обнаружил, что не могу использовать метод модификации xml, указанный в качестве ответа, потому что мы 'Я использую CF 9.0.1, и xml будет возвращаться почти сразу после того, как я его изменил.
Я попытался просмотреть cURL и обнаружил, что, хотя я могу использовать cURL для вызова процесса, я не могу получить планировщик Windowsбежать с интервалом менее минуты, либо.Затем, ища способ заставить планировщик Windows работать с меньшими интервалами (так как я подумал, что не могу обмануть CF на этом этапе), я наткнулся на предложение, сделанное на обмене экспертами (я не могу вспомнить URL-адрес)рука).
Исходя из этого, я настроил тест, используя эту идею: добавьте еще один слой программы, который вызывает программу, которую вы хотите запланировать.Сделайте этот слой зацикливанием и запланируйте его на интервал, превышающий минуту.В конечном итоге я выбрал запланированную задачу CF, которая вызывает моего «вызывающего» каждые 2 минуты, и этот «вызывающий» имеет цикл, который спит каждые X секунд.
Ниже приведен код, который я использовал для тестов, отформатированный вответить на 30 секундный интервал спрашивающего.Я использовал сторонний cfc для управления журналом для вывода отладки таким образом, чтобы я мог сохранить и вернуться к ней.
Тестовый файл планируется запускать каждые 2 минуты:
<cfsetting requestTimeOut = "120000">
<cfscript>
/* Get starting count to keep track of overall running time */
Start = GetTickCount();
/* Set an ID for this process so I know */
thisProcess = CreateUUID();
counter = 0;
/* Set up a log-file-handler object.
* I will use the log lines to keep track of this process
* and whether or not it steps on itself.
* */
LogWriter = CreateObject('component','log.LogMgr').init('C:\Logs\');
LogFile = 'Test\30SecondTestLog';
LogWriter.WriteToLog('Information',LogFile,'#thisProcess# __ Started');
</cfscript>
<cftry>
<cfloop condition="Counter LT 4">
<!--- Output here is if you want to run it manually --->
<br /><cfdump var="#counter#">
<!--- Here you could put a cfhttp or similar trigger.
In my test I just used an update to a test DB table.
The catch here is that you don't want it to take too
long to get to the next steps, so you want to avoid
a long-running process that has to return something.
--->
<cfquery datasource="Marge" name="update">
Update test..testCount
Set CountField = CountField + 1
</cfquery>
<cfscript>
counter += 1;
LogWriter.WriteToLog('Information',LogFile,'#thisProcess# __ #counter# - Written');
/* Important part! Here is where the 30-second delay
* happens. However, we don't want to dally if this is
* the last time running it.
* */
if(counter NEQ 4){ sleep(30000); }
</cfscript>
</cfloop>
<!--- Time to output finishing details --->
<br />Done. <br />
<cfset End = GetTickCount()>
<cfdump var="#End - Start#">
<cfset LogWriter.WriteToLog('Information',LogFile,'#thisProcess# __ Done - Time: #End - Start#')>
<cfcatch type="any">
<cfset LogWriter.WriteToLog('Error',LogFile,'#thisProcess# __ #counter# - #cfcatch.message#')>
</cfcatch>
</cftry>
Протокол ведения журнала, используемый для отладки:
<cfscript>
variables.LogHome = '';
</cfscript>
<cffunction name="init" raturntype="LogMgr">
<cfargument name="LogHome" type="string">
<cfset variables.LogHome = arguments.LogHome>
<cfreturn this>
</cffunction>
<!--- I wanted to use WriteLog, but that function name is already used in core CF --->
<cffunction name="WriteToLog" returntype="void" hint="writes to a log file.">
<cfargument name="LogType" type="string" hint="Based off cflog, expects severity level: Information, Warning, Error, or Fatal">
<cfargument name="LogPath" type="string" hint="Path and file from log root">
<cfargument name="LogString" type="string" hint="String to output in log">
<cfscript>
theFile = variables.LogHome & '\' & arguments.LogPath & '.log';
theString = arguments.LogType & chr(9) & DateFormat(Now(),'mm/dd/yyyy')& ' ' & TimeFormat(Now(),'HH:mm:ss');
theString &= ' ' & arguments.LogString;
</cfscript>
<cfif FileExists(theFile)>
<cffile action="append"
file="#theFile#"
output="#theString#"
addnewline="yes">
<cfelse>
<cffile action="write"
file="#theFile#"
output="#theString#"
addnewline="yes">
</cfif>
</cffunction>
</cfcomponent>
Тест выдал этот вывод журнала, когда запланировано наокно продолжительностью десять минут:
Информация 26.02.2013 15:29:00 F1E76BAE-C29A-208A-7B14339FD6B9B8D5 __ Начато 26.02.2013 15:29:00 F1E76BAE-C29A-208A-7B14339FD6B9B8D5 __ 1 - Письменная информация 26.02.2013 15:29:30 F1E76BAE-C29A-208A-7B14339FD6B9B8D5 __ 2 - Письменная информация 26.02.2013 15:30:00 F1E76BAE-C29A-208A-7B14338FD6B930B6Информация 26.02.2013 15:30:30 F1E76BAE-C29A-208A-7B14339FD6B9B8D5 __ 4 - Письменная информация 26.02.2013 15:30:30 F1E76BAE-C29A-208A-7B14339FD6B9B8D5 __ Готово - время: 90123 Информация 02/26/ 2013 15:31:00 F1F9B64D-C29A-208A-73CEACA04A02F544 __ Начатый Информация 26.02.2013 15:31:00 F1F9B64D-C29A-208A-73CEACA04A02F544 __ 1 - Письменная информация 26.02.2013 15:31:30 F1F9B64D-C29A-208A-73CEACA04A02F544 __ 2 - Письменная информация 26.02.2013 15:32:00 F1F9B64D-C29A-208A-73CEACA04A02F544 __ 3 - Письменная информация 26.02.2013 15:32:30 F1F9B64D-C29A-208A-73CEACA04A02F544 __ 4 - Письменная информация 26.02.2013 15:32:30 F1F9B64D-C29A-208A-73CEACA04A02F544 __ Готово - Время: 90053 Информация 26.02.2013 15:33:00 F20C0329-C29A-208A-79C8C0D4C1E1FDFF __ Начато 26.02.2013 15:33:00 F20C0329-C29A-208A-79C8C0D4C1Eten 126.02.2013 15:33:30 F20C0329-C29A-208A-79C8C0D4C1E1FDFF __ 2 - Письменная информация 26.02.2013 15:34:00 F20C0329-C29A-208A-79C8C0D4C1E1FDFF __ 3 - Письменная информация 02/26/2013 15: 34: 30 F20C0329-C29A-208A-79C8C0D4C1E1FDFF __ 4 - Письменная информация 26.02.2013 15:34:30 F20C0329-C29A-208A-79C8C0D4C1E1FDFF __ Готово - Время: 90054 Информация 02/26/2013 15:35:00F21E5001-C29A-208A-744291B2817D7702 __. Начатая информация 26.02.2013 15:35:00 F21E5001-C29A-208A-744291B2817D7702 __ 1 - письменная информация 26.02.2013 15:35:30 F21E5001-C29A-208A-7442928229292 - Письменная информация 26.02.2013 15:36:00F21E5001-C29A-208A-744291B2817D7702 __ 3 - письменная информация 26.02.2013 15:36:30 F21E5001-C29A-208A-744291B2817D7702 __ 4 - письменная информация 26.02.2013 15:36:30 F21E5001-C29A-208A-744291B2817D7702 __ Готово - Время: 90029 Информация 26.02.2013 15:37:00 F2309E2F-C29A-208A-7D6A5A2D1CA7D9EF __ Начато 26.02.2013 15:37:00 F2309E2F-C29A-208A-7D6A5A2D1A1A1A1D1A1A1A1_ФФ 1A1111Информация 26.02.2013 15:37:30 F2309E2F-C29A-208A-7D6A5A2D1CA7D9EF __ 2 - Письменная информация 26.02.2013 15:38:00 F2309E2F-C29A-208A-7D6A5A2D1CA7D9EF __ 3 - Письменная информация 02/26/201315:38:30 F2309E2F-C29A-208A-7D6A5A2D1CA7D9EF __ 4 - Письменная информация 26.02.2013 15:38:30 F2309E2F-C29A-208A-7D6A5A2D1CA7D9EF __ Готово - Время: 90013 Информация 02/26/2013 15:39:00 F242ED34-C29A-208A-7952DA25AF0C446D __ Начато 26.02.2013 15:39:00 F242ED34-C29A-208A-7952DA25AF0C446D __ 1 - письменная информация 26.02.2013 15:39:30 F242ED34-C29A-208AF 7952256__ 2 - письменная информация 26.02.2013 15:40:00 F242ED34-C29A-208A-7952DA25AF0C446D __ 3 - письменная информация 26.02.2013 15:40:30 F242ED34-C29A-208A-7952DA25AF0C446D __ 4 - письменная информация 02/ 26/2013 15:40:30 F242ED34-C29A-208A-7952DA25AF0C446D __ Готово - Время: 90045
Надеюсь, это может помочь всем, кто не смог получить ответы на другие вопросы!