2017-02-04 8 views
1

私は別々の夜間のプロセスでスケジュールされた15の別々の.cfmページを持っています。私が1つのページに入れて、他のすべてのページを入れて1つずつ実行したいと思っています。私は私のbroweserのURL ScheduleTask.cfmに入れてみましたが、私は持って、エラーcfincludeを使用したColdFusionスケジュールタスク?

<cfinclude template="page1.cfm"> 
<cfinclude template="page2.cfm"> 
<cfinclude template="page3.cfm"> 

を:私含み、それぞれが生成

Detail The routine standardSelect has been declared twice in different templates. 
Message  Routines cannot be declared more than once. 

私はScheduleTask.cfmに私が含まれている、これを実行しようとしましたページは、cfqueryから優秀です。また、インクルードの周りにブロックをキャッチして、それ以外に何をチェックする必要がありますか?

はまた、私は疲れて構造体とループを使用してこの問題にアプローチします

<cftry> 
    <cfset rptCFMFiles = { 
      file1 = "page1.cfm", 
      file2 = "page2.cfm", 
      file3 = "page3.cfm", 
     }> 

    <cfloop collection="#rptCFMFiles#" item="key"> 
     <cfoutput> 
      <cfinclude template="#rptCFMFiles[key]#"> 
     </cfoutput> 
    </cfloop> 

    <cfcatch> 
     <cfdump var="#cfcatch#"> 
    </cfcatch> 
</cftry> 

同じエラーが再度示した:だれでも助けることができる場合は

Detail: The routine standardSelect has been declared twice in different templates. 
Message: Routines cannot be declared more than once. 

私に知らせてください。

+1

スクリプトは、単一のCFことを逐次ので、実行することができるように、私は(APIコールバック/ wの結果を保存)CURLリクエスト/ wのBATファイルを実行するcronタスクを生成する(CFフロントエンド/ w)の別のスケジューリングツールを書きましたエラーはプロセス全体を中止しません。このアプローチは移植性があり、タイムアウトせず、CFThreadsを必要としません。 (私はCFScheduleの管理者の制限のためにこれをやり始めました) –

+0

@JamesMobergあなたが使用しているツールの例を表示できますか?ありがとう。 –

+0

私はWindows用のnnCron LITEを使用しています。私はプレーンテキストCRONTABファイルを生成するためにCFを使用します。各タスクは、ここではサンプルCRONTAB&BATファイルだ/ 1以上のWebリクエスト(または非Web要求)ワットBATファイルを実行します。https://gist.github.com/JamoCA/96cd5afd12fc19513ef3c2a882a38f9b –

答えて

2

あなたの特定のエラーは、あなたの含まれるファイルのうちの少なくとも2つは持っている、またはstandardSelectという名前の関数で.CFMページを含めるのいずれかということです。あなたはそれらの機能をすべて見つけ出し、何かをしなければなりません。あなたがすることは、あなたが見つけるものの詳細に依存します。

あなたの一般的な考え方は、私たちが実際に行うことです。私たちはあなたが考えなかったかもしれない詳細をいくつか持っています。 <cfincludeに展開するカスタムタグがあります。あなたが思ったtry/catchを実行するだけでなく、結果を記録します。ジョブが正常に実行された場合は、ログに記録されます。エラーが発生すると、詳細が記録されます。

しかし、もっと多くのことがあります。これらのログを読み取る他のスケジュールされたジョブがあります。何かが間違っていたら、何が起こったのかに関する報告が、何かできる人に送られます。実際に、私は今朝、その報告書の一つを入手しました。

+0

あなたはどのように、何のいずれかの例を持っていますかこれを整理する最良の方法は何ですか?レポートの名前 - 日時などの情報が画面に表示されます。また、各レポートを別々の.cfmに保存するか、すべてのレポートを1つの.cfmファイルに入れる方が良いでしょう。私はそれが問題を引き起こす可能性があるか、どのくらいの速いタスクが実行されるかの違いがあるかどうかはわかりません。 –

+0

スケジュールされたジョブを画面に出力するというコンセプトは、丁寧であることは珍しいことです。 –

+0

レポートが生成された時刻と日付を出力すると、珍しいことはありません。とにかく助けてくれてありがとう。 –

1

簡単な方法は、各URLを呼び出すために1つのCFM内で複数回のcfhttpを使用することです。シリアルで。 cfhttpをすべて実行する1つのcfmをスケジュールします。

+0

これは興味深い解決策です。それは、クロス依存を心配する必要がありますラウンドを取得します。 –

関連する問題