2

我想通过在其中一个上写一个页面来找出在 5 或 6 个 Coldfusion Web 服务器上运行的计划任务的详细信息。有什么办法吗?可以通过阅读所有这些文件上的 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 服务器上运行的计划任务的详细信息。谢谢!!

4

4 回答 4

2

您可以使用cfschedule 标记,并在每台服务器上放置一个页面,以输出该机器的计划任务。然后,您可以使用对每个服务器的 HTTP 请求来获取它负责的任务并将它们输出到监控服务器上的页面。

于 2011-02-07T20:52:05.837 回答
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>
于 2011-02-18T01:12:03.010 回答
1

我可能会做的是在目标服务器上创建一个 cfc,它将计划任务查找的结果返回到某种 json、xml 或查询中,这些查询可通过设置的用户名和密码获取数据一台服务器到另一台服务器,根据需要....

于 2011-02-14T20:34:26.723 回答
0

我们处理这个问题的方法是在数据库表中添加一行,其中包含任务的 URL。如果您将所有任务都放在一个目录中,最好的方法是使用可用的 CGI 变量在 Application.cfc 中添加数据库日志记录。

然后可以根据您预期的运行情况对其进行检查。

希望有帮助!

于 2011-02-10T13:37:05.577 回答