2016-11-09 131 views
1

我有一個API服務,它使用odbc_connect,odbc_exec從數據庫加載數據。PHP沒有關閉與數據庫的連接(odbc)

我有一個100行查詢,我決定移動到存儲過程。服務請求的數量約爲每秒10個。

那麼,什麼是問題:當使用像SELECT smthng這樣的常規查詢一切正常,當在一個過程中使用相同的SELECT服務開始響應很慢。它會導致數據庫中的許多打開的連接無法關閉。

我試過odbc_close_all之後直接odbc_execodbc_fetch - 沒有幫助。

SELECT count(*) 
FROM master..sysprocesses 
WHERE suid > 0 

返回約500個連接。

我也試圖設置

SET PROC_RETURN_STATUS OFF 

也沒有幫助。

回答

1

頁從manual說:如果有這個 連接打開交易

此功能將失敗。在這種情況下,連接將保持打開狀態。

我認爲這解釋了你所面對的行爲。 我認爲當存儲過程完成它的工作時,losted連接就會死掉。無論如何,在這裏你的案例需要一些研究。

+0

但是我只在得到結果後才關閉連接。在這種情況下會失敗嗎? – Daria

+0

所以..從PHP你執行調用存儲過程,獲得結果,關閉連接,並且它不關閉(執行存儲過程後)?在這種情況下你使用交易嗎? –

+0

不,你是什麼意思「交易」?我的查詢是'EXECUTE procName $ param'; – Daria