2014-03-12 42 views
6

我知道PHP會在腳本執行結束時關閉所有打開的MySQL連接,但是如果發生致命錯誤,連接會發生什麼?PHP是否關閉了一個關於mysql(i)連接的致命錯誤?

  • 不管錯誤是否關閉PHP連接?
  • 或者他們在一段時間後關閉?
  • 或者在這種情況下沒有打開嗎?

我在這裏或谷歌找不到任何東西。

我使用靜態連接重用它們。此外還有一個__destruct()關閉它。在執行結束時,調用析構函數(我在日誌文件中看到它)。 但是,如果我做了一個致命的錯誤(只是爲了找出發生了什麼),析構函數不會被調用。連接會發生什麼?

+0

這不會*回答問題,但您可以嘗試使用'set_error_handler'和/或'register_shutdown_function'來關閉MySQL連接。不過,我不確定那些是否會發生致命錯誤。只是一個想法。更新:也許這可以幫助:http://stackoverflow.com/a/8527924 –

+0

感謝@RocketHazmat進行編輯! :) – silversmurf

+0

不客氣:-) –

回答

7

除非您使用持久連接,否則在腳本執行結束時,mysql連接將始終自動關閉。

PHP致命錯誤將停止腳本的執行,並且mysql連接將被釋放。

3

在發生這樣的崩潰時,php引擎會刪除所有打開的連接。就像沒有崩潰一樣。這是引擎的清理工作。例外:當使用預先連接時,連接被集中並被後續腳本重新使用。

你提到的析構函數是你的類中的析構函數,可能是一些包裝類。沒有理由爲什麼php應該調用它,如果它關閉了與mysql服務器的連接。