PHP file_get_contents和curl區別

1、file_get_contents

1.定義

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

2.語法

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

3.示例

test.txt瀏覽器

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

index.php緩存

<?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"
?>

2、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.語法

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

3.示例

test.phpcookie

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

index.phpcurl

<?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);
?>

3、file_get_contents 和 curl 區別

1.curl 支持更多功能

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

fopen / file_get_contents 只能使用 GET 方式獲取數據。性能

2.性能

curl 能夠進行 DNS 緩存,同一個域名下的圖片或其它資源只須要進行一次DNS查詢。url

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

PHP file_get_contents和curl區別

相關文章
相關標籤/搜索