2017-05-07 75 views
0

在經典的asp中我有文件open.aspclose.asp包括在每個頁面的頂部和底部。某處我在我的代碼中有response.end。我是否需要在response.end之前關閉連接,或者在response.end之後服務器是否將頁面翻譯爲頁面末尾? open.asp的我需要在response.end之前關閉連接嗎?

內容:

Set objcon = Server.CreateObject("ADODB.Connection") 
objcon.connectionString="DSN=something" 
objcon.Open 

內容close.asp的:

objcon.close 
set objcon=nothing 

請注意,我有多個連接和內存泄漏沒有問題。我確切的問題是關於服務器對「Response.End」的行爲。

+0

是的。你做。否則你可能最終會發生內存泄漏。 –

+1

那麼,在調用Response.End之前,您可以調用Server.Execute(「close.asp」) –

+0

[使用Server.CreateObject(「ADODB.Connection」)](http:// stackoverflow .com/questions/7896241/connection-leaks-in-classic-asp-using-server-createobjectadodb-connection) – Lankymart

回答

0

Response.End停止進一步執行頁面。從docs:「該文件的其餘內容未處理。」所以,不,在這種情況下連接對象不會被清理乾淨。

最好先繼續創建更細粒度級別的連接對象,然後儘快銷燬/釋放連接對象回ADO連接池,這是管理數據庫的實際連接。重新使用連接對象會使其更容易被無法正確清理。