2013-07-07 14 views
0

我正在學習php和Mysql數據庫。一切都很好。但下面的代碼讓我感到困惑:mysql_close()和unset()有什麼區別?

if(isset($connection)){ 
      mysql_close($connection); 
      unset($connection); 
} 

據我所知,mysql_close()函數負責關閉連接。那麼爲什麼在這裏使用額外的unset()函數呢?請解釋一下。提前致謝。

+0

對不起,但是**爲什麼**如果您現在正在學習*,您是否在使用'mysql_ *'擴展名,因爲整個「包」已被棄用? –

+0

期望在教程中找到很多錯誤的代碼。壞事是互聯網永遠不會忘記,對於那些充斥着現在已知的壞習慣的舊編碼例子,或者沒有使用現在使事情變得更容易的任何偉大的新功能,情況都是如此。至少檢查教程或代碼示例適用於哪個PHP版本。任何超過5.3的應該被認爲是有問題的。這可能還是可以的,但你應該檢查這是否仍然如此。 – Sven

回答

5
  • mysql_close($connection)關閉到與$連接相關的MySQL服務器的非持久連接。如果未指定$ connection,則使用上次打開的鏈接。

    - 此功能已棄用,請使用PDO或mysqli。

  • unset($connection)清除指向PHP一側結果的指針,但不會對指向的結果做任何事情。

+0

如果沒有其他引用'$ connection',GC不會啓動嗎?雖然GC不會馬上發生。 – h2ooooooo

+0

@ h2ooooooo它會,但仍然算「無」;-) –

0

unset($connection)只會使var $connection等於NULL。如果您沒有執行unset,那麼變量$connection仍然會指向MySQL鏈接標識符,該標識符在mysql_close()之後無效。這有點迂腐;無論您是否在unset之後,$connection var都不會在mysql_close()之後可用。

1

額外的unset()將允許垃圾回收清除變量正在佔用的內存,也是(很可能)您的應用程序代碼也對該變量執行更多if (isset(...))條件。