file_get_content和curl的區別


一、file_get_contents
1.定義
file_get_contents() 函數將指定 URL 的文件讀入一個字符串並返回。

2.語法

file_get_contents(path, include_path, context, start, max_length)

path:要讀取的路徑或鏈接。
include_path:是否在路徑中搜索文件,搜索則設為 1,默認為 false。
context:修改流的行為,如超時時間,GET / POST 等。
start:開始讀文件的位置。
max_length:讀取文件的字節數。
3.示例

<?php
$testTxt = file_get_contents('./test.txt');
var_dump($testTxt); // string(15) "i'm a test txt."

$ctx = stream_context_create(
    array(
        'http' => array(
            'method' => 'get',
            'timeout' => 30
        )
    )
);
$testTxt = file_get_contents('./test.txt', false, $ctx, 4, 6);
var_dump($testTxt); // string(6) "a test"
?>

二、curl
1.定義
PHP 支持 Daniel Stenberg 創建的 libcurl 庫,能夠連接通訊各種服務器、使用各種協議。libcurl 目前支持的協議有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同時支持 HTTPS 證書、HTTP POST、HTTP PUT、 FTP 上傳(也能通過 PHP 的 FTP 擴展完成)、HTTP 基於表單的上傳、代理、cookies、用戶名+密碼的認證。

2.語法
curl_init:初始化 cURL 會話。
curl_setopt:設置 cURL 傳輸選項。
curl_exec:返回 true / false,curl_setopt 設置 CURLOPT_RETURNTRANSFER 為 TRUE 時將 curl_exec() 獲取的信息以字符串返回。
curl_close:關閉 cURL 會話。
3.示例
test.php

<?php
echo "i'm a test php";
?>

index.php

<?php
// 創建一個新 cURL 資源
$ch = curl_init();

// 設置URL和相應的選項
curl_setopt($ch, CURLOPT_URL, "http://localhost/test.php"); // 需要獲取的 URL 地址,也可以在 curl_init() 初始化會話的時候。
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HEADER, false); // 啟用時會將頭文件的信息作為數據流輸出。
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // 在嘗試連接時等待的秒數。設置為 0,則無限等待。
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 允許 cURL 函數執行的最長秒數。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // TRUE 將 curl_exec() 獲取的信息以字符串返回,而不是直接輸出。

// 抓取 URL 並把它傳遞給瀏覽器
$ret = curl_exec($ch);

var_dump($ret);

// 關閉 cURL 資源,並且釋放系統資源
curl_close($ch);
?>

三、file_get_contents 和 curl 區別

  • curl 支持更多功能

curl 支持更多協議,有http、https、ftp、gopher、telnet、dict、file、ldap;模擬 Cookie 登錄,爬取網頁;FTP 上傳下載。

  • 性能

curl 可以進行 DNS 緩存,同一個域名下的圖片或其它資源只需要進行一次DNS查詢。

curl 相對來說更加快速穩定,訪問量高的時候首選 curl,缺點就是相對於 file_get_contents 配置繁瑣一點,file_get_contents 適用與處理小訪問的應用。

作者:后除
鏈接:https://www.jianshu.com/p/39acc2d9ab4a
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM