一、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
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。