我想了解在5或6个coldfusion网络服务器上运行的计划任务的详细信息,只需在其中一个上写一页。有什么办法吗? 可以通过在所有这些上读取cron.xml来完成。
我遇到了以下代码
<cflock name="alltasks" type="exclusive" timeout="10">
<cfscript>
factory = CreateObject("java","coldfusion.server.ServiceFactory");
cron_service = factory.CronService;
services = cron_service.listALL();
</cfscript>
此代码适用于查找将在其上执行的Web服务器的详细信息。
我正在寻找类似于此的内容,这将为我提供在同一网络中的所有Web服务器上运行的计划任务的详细信息。谢谢!
答案 0 :(得分:2)
您可以使用cfschedule tag,并在每台服务器上放置一个页面,以输出该计算机的计划任务。然后,您可以使用HTTP请求到每个服务器来获取它负责的任务,并将它们输出到监控服务器上的页面。
答案 1 :(得分:2)
<!--- ServerList contains all server's(7,8,9) ipaddress,,, --->
<cfset serverList = 'a.b.c.d, p.q.r.s, ....... , u.v.w.x'>
<cfoutput>
Searched In: #serverList#<br>
<Cfloop list="#serverList#" index="s">
<cfif FileExists('\\#s#\C$\ColdFusion8\lib\neo-cron.xml')>
<cfset pathToFindNeo = '\\#s#\C$\ColdFusion8\lib\neo-cron.xml'>
<cfelseif FileExists('\\#s#\C$\CFusionMX7\lib\neo-cron.xml') >
<cfset pathToFindNeo = '\\#s#\C$\CFusionMX7\lib\neo-cron.xml'>
<cfelseif FileExists('\\#s#\C$\ColdFusion9\lib\neo-cron.xml')>
<cfset pathToFindNeo = '\\#s#\C$\ColdFusion9\lib\neo-cron.xml'>
<cfelseif FileExists('\\#s#\ColdFusion\lib\neo-cron.xml')>
<cfset pathToFindNeo = '\\#s#\ColdFusion\lib\neo-cron.xml'>
<cfelse>
<cfset pathToFindNeo = 0>
</cfif>
<h3>#s# [#pathToFindNeo#]</h3>
<!--- Get the scheduler xml file. It's stored as WDDX in CFroot dir--->
<cfif pathToFindNeo neq 0>
<cffile action="Read" file="#pathToFindNeo#" variable="TaskXML">
<!--- Convert the WDDX to CFML - and array of structs --->
<cfwddx action="WDDX2CFML" input="#TaskXML#" output="GetTasks">
<table border="1" width="100%">
<tr>
<td><strong>Name</strong></td>
<Td><strong>URL</strong></Td>
<td><strong>Interval</strong></td>
<Td><strong>Disabled</strong></Td>
<td><strong>Start Date</strong></td>
<td><strong>Start Time</strong></td>
<td><strong>End Time</strong></td>
<td><strong>Operation</strong></td>
</tr>
<cfloop collection="#GetTasks[1]#" item="key">
<cfif GetTasks[1][key]['disabled'] eq 'NO'>
<tr>
<cfelse>
<tr style="background-color:##CCC">
</cfif>
<td>#key#</td>
<td>#GetTasks[1][key]['url']#</td>
<td>#GetTasks[1][key]['interval']#</td>
<td>#GetTasks[1][key]['disabled']#</td>
<td>#GetTasks[1][key]['start_date']#</td>
<td>#GetTasks[1][key]['start_time']#</td>
<td>
<cfif StructKeyExists(GetTasks[1][key], "end_time")>
#GetTasks[1][key]['end_time']#
<cfelse>
-
</Cfif>
</td>
<td>#GetTasks[1][key]['operation']#</td>
</tr>
</cfloop>
</TABLE>
<CFELSE>
FILE 'neo-cron.xml' NOT FOUND
</cfif>
</Cfloop>
</cfoutput>
答案 2 :(得分:1)
我可能会做的是在目标服务器上创建一个cfc,它会将查找计划任务的结果返回到某种类型的json,xml或查询中,这些json,xml或查询可以通过set username&amp;密码,根据需要从1台服务器获取数据....
答案 3 :(得分:0)
我们处理此问题的方法是使用任务的URL向数据库表添加一行。如果您在一个目录中拥有所有任务,那么最好的方法是使用可用的CGI变量在Application.cfc中添加数据库日志。
然后可以根据您预期的运行情况对此进行检查。
希望有所帮助!