以前在讀取遠程文件的時候,我一直喜歡使用file_get_contents,原因是在PHP的手冊裏面介紹讀取文
件內容的時候,首選此函數。但是現在發現,如果是遠程文件,curl纔是首選。file_get_contents用來
讀取本地文件纔是首選。
首先說性能,下面在一個在國外網站上看到的二者的讀取google.com首頁的測試:
Fetching google.com using file_get_contents took(in seconds):
2.31319094
2.30374217
2.21512604
3.30553889
2.30124092
CURLtook:
0.68719101
0.64675593
0.64326
0.81983113
0.63956594
具體還沒有測試,不過可以參考一下。
二是兩者除了性能以外,確實還有一些其他的區別,這裏順便說說fopen:
fopen不會keepalive,
file_get_contents請求http時,使用的是http_fopen_wrapper,也不會keeplive,
而curl卻是可以的。
這個是讀取一般文件的時候並沒有什麼問題,但是在讀取遠程問題的時候就會出現問題。如果是要打一個
持續連接,多次請求多個頁面。那麼file_get_contents和fopen就會出問題。取得的內容也可能會不
對。所以做一些類似採集工作的時候,肯定就有問題了。
注意到了這個問題,以後如果要給系統做採集功能的時候,就用得着了。