2017-08-04 77 views
1

我有一些代碼,我在這裏借用形式:https://www.sitepoint.com/get-shorty-coldfusion/CFLOOP timeot錯誤問題

我所有的氟氯化碳和示例代碼的設置,以及數據庫。當我嘗試運行代碼時,我得到了URL縮短器的cfloop錯誤。想知道是否有人可以給我任何想法,爲什麼這可能不會運行。

The request has exceeded the allowable time limit Tag: CFLOOP. The error occurred in C:/ColdFusion2016/cfusion/wwwroot/URLS/add.cfm: line 5 

<!--- keep trying to insert until successful ---> 
    <cfloop condition="len(shortlink) EQ 0"> 
     <cfset shortlink = application.oContent.insertContent(link)> 
    </cfloop> 
    <cfset message = "Your short URL is <a href='http://#cgi.server_name#:#cgi.server_port#/URLS/?#shortlink#'>http://#cgi.server_name#:#cgi.server_port#/URLS/?#shortlink#</a>"> 
+0

它在寫入頂部:請求超出了允許的時間限制標籤:CFLOOP。錯誤發生在C:/ColdFusion2016/cfusion/wwwroot/URLS/add.cfm:line 5 –

+0

如果鏈接永遠不會被創建,它最終會超時。 –

+0

爲什麼這是一個'cfloop'而不是'cfif'?在循環中鏈接的值是否會改變? – snackboy

回答

1

要解決問題,改變這種:

<cfloop condition="len(shortlink) EQ 0"> 
<cfset shortlink = application.oContent.insertContent(link)> 
</cfloop> 

這樣:

<cfset shortlink = application.oContent.insertContent(link)> 
<cfdump var = "shortlink is #shortlink# and len(shortlink) is #len(shortlink)#"> 

如果shortlink的長度爲0,你有一個無限循環。那麼你的重點應該放在爲什麼shortlink是一個空字符串。

說了這麼多,重複評論中提到的內容,這是一個不適合循環的地方。如果它第一次失敗,並且你不改變循環內的任何東西,它總是會失敗。