2012-12-02 35 views
1

我有一個scheduled task應該每分鐘運行一次。爲了從外部被稱爲阻止文件,我想比較主機和調用IP地址,像這樣:如何確保Coldfusion對象只創建一次?

<cfif NOT structKeyExists("variables", caller)> 
    <cfset variables.caller = createObject("java", "java.net.InetAddress")> 
</cfif> 

<cfif variables.caller.getLocalHost().getHostAddress() EQ cgi.remote_addr> 
    // run task 
</cfif> 

問:
我真的不用於與ColdFusion的objects工作,所以會這是一種確保對象創建一次並在任務被調用時每分鐘重新創建一次的方法?由於這是在我的管理部分運行,我應該立即在應用程序範圍內創建對象嗎?

感謝您的一些意見!

+1

爲什麼不設置目錄權限呢?如果這被稱爲每分鐘 – Russ

+0

hm,那將節省大量的開銷。不知道我明白你的意思嗎? – frequent

+2

@Russ給你一個很好的答案,以確保你的cf文件只能被預定的作業調用。至於確保每次作業運行時都創建對象,則不必執行任何操作。一旦文件完成執行,您在cf文件中創建的對象就會被銷燬。 –

回答

1

即使請求是計劃任務,當您運行請求時,請求已完成時將銷燬所有變量。只有會話,應用程序和服務器等變量在請求之間保持不變。

一種方法,以確保網頁只有機器,他們是在運行是:

<cfif cgi.remote_addr EQ "127.0.0.1"> 
// run task 
</cfif> 
+2

我不知道你想要這個有多安全。我沒有嘗試過,但根據[this](http://www.12robots.com/index.cfm/2008/12/9/Spoofing-CGI-variables--Security-Series-11),它可能不是要走的路。 – Barry

+0

......我也想到了:-)。還要感謝鏈接@Barry。 – frequent

+0

如果它只能作爲計劃任務運行,那麼我會查看cgi.http_referring_agent。 –

相關問題