三個函數雖然都是讀取資源的函數,但各自的應用場景不一樣。緩存
curl多用於互聯網網頁之間的抓取,fopen多用於讀取文件,而file_get_contents多用於獲取靜態頁面的內容。app
1. fopen /file_get_contents 每次請求都會從新作DNS查詢,並不對DNS信息進行緩存。可是CURL會自動對DNS信息進行緩存。對同一域名下的網頁或者圖片的請求只須要一次DNS查詢。這大大減小了DNS查詢的次數。因此CURL的性能比fopen /file_get_contents 好不少。curl
2. fopen /file_get_contents在請求HTTP時,使用的是http_fopen_wrapper,不會keeplive。而curl卻能夠。這樣在屢次請求多個連接時,curl效率會好一些。函數
3. curl能夠模擬多種請求,例如:POST數據,表單提交等,用戶能夠按照本身的需求來定製請求。而fopen / file_get_contents只能使用get方式獲取數據。性能