這個問題沒有切割&乾的答案。優化和性能將在很大程度上取決於您的特定代碼庫,運行的平臺,服務器上還運行着什麼,等等。
要開始您的情景太模糊,以提供足夠的答案。然而,要觸及一些先前的意見/疑慮......
PHP沒有非常明確的垃圾收集規則。在THEORY場景中,當函數因垃圾收集而退出時,A將釋放內存。實際上這很少發生。有很多觸發器會導致垃圾回收來釋放內存,但幕後實際的低級別free()和mallocs()不會被幹掉。如果你仔細觀察你的內存堆棧,你會發現在一個函數退出$ file1,$ file2,$ file3的內存空間後將會保留。有時直到整個應用程序退出。
您的應用程序構造還將決定哪個更快,在$ file1,$ file2,$ file3的符號表中創建一個新條目,或者在&之上重新使用$ fp。在理論上再次使用$ fp通常意味着內存空間不需要重新分配,並且不需要重新創建新的符號表條目和相應的管理對象。然而,這並非總是如此。有時候重新使用$ fp實際上會比較慢,因爲需要首先調用destroy,然後重新創建對象。在某些情況下,在迭代過程中創建一個新的$ file1,$ file2,$ file3可能會更快,並且讓垃圾收集一次全部發生。
所以,這一切的底線....
您需要分析,並在其原生環境中測試自己的應用學習的東西在你的操場上如何表現。很少有「永遠這樣做」或「永遠不會這樣」的情況。
IIRC,PHP的垃圾收集器一旦超出範圍就從內存中刪除變量。釋放一個變量不會產生巨大影響。 – Blender
我的預感是B使用的內存稍少,但兩者都可能是糟糕的編碼習慣。這聽起來像你想要的是編寫一個函數,對這些文件做些什麼,並調用它三次。不要把所有東西都放到一個大範圍內。編寫小巧,易管理的函數,並在函數結束時讓不需要的變量超出範圍。 – Okonomiyaki3000
由於您在此處詢問了有關文件句柄的問題,因此您可能希望從其他方面查看:如果使用變量關閉文件會發生什麼情況? [可以通過取消設置手柄來關閉文件嗎?](http://stackoverflow.com/q/10928892/367456) – hakre