php下的curl庫,php curl 下載文件

本文目錄一覽:

php的curl和socket的區別

首先說下啥是socket:

PHP使用berkely的socket庫來創建他的連接,socket是一個數據結果,你可以通過這個socket來開啟伺服器和客戶端的會話。伺服器端一直處於監聽狀態,當一個客戶端連接伺服器,他就打開伺服器端正在監聽的一個埠進行會話。這時伺服器端接收客戶端的連接請求,那麼就進行一次循環。現在這個客戶端就能夠發送信息到伺服器,伺服器也可以發送信息給客戶端。

產生一個socket你一共需要三個變數:

1、一個協議

2、一個socket類型

3、一個公共協議類型

以下是對這三個變數的詳細解釋,大概了解下吧(但願你能記得住偷笑)

協議:產生一個socket有三個協議供選擇:

1、AF_INET 這個是使用比較廣泛的產生socket的協議,使用tcp或者udp協議傳輸,使用ipv4地址

2、AF_INET6 顯而易見哈,同上,不同的是使用ipv6地址

3、AF_UNIX 使用在unix或者Linux機器上,這個很少使用,僅在伺服器端和客戶端均為unix或者linux系統上使用。

socket類型:

1、SOCK_STREAM 這個協議是按照順序的、可靠的、數據完整的基於位元組流的連接。這是一個使用最多的socket類型,這個socket是使用TCP來進行傳輸。

2、SOCK_DGRAM 這個協議是無連接的、固定長度的傳輸調用。該協議是不可靠的,使用UDP來進行它的連接。

3、SOCK_SEQPACKET 這個協議是雙線路的、可靠的連接,發送固定長度的數據包進行傳輸。必須把這個包完整的接受才能進行讀取。

4、SOCK_RAW 這個socket類型提供單一的網路訪問,這個socket類型使用ICMP公共協議。(ping、traceroute使用該協議)

5、SOCK_RDM 這個類型是很少使用的,在大部分的操作系統上沒有實現,它是提供給數據鏈路層使用,不保證數據包的順序

公共協議類型:

1、ICMP (Internet Control Message Protocol)互聯網控制報文協議,主要用在網關和主機上,用來檢測網路狀況和報告錯誤信息

2、TCP (Transmission Control Protocol) 傳輸控制協議,他是使用最廣泛的協議,他能夠保證數據包到達接收者那裡,如果中途出現錯誤,那麼此協議從新發送數據包。

3、UDP (User Datagram Protocol)用戶數據包協議,他是無連接的,不可靠的數據傳輸協議。

好啦,你現在知道了產生一個socke需要三個元素,那麼在php中socket_create()就需要三個參數,一個協議,一個socket類型,一個公共協議。如果創建成功,socket_create()返回一個socket資源類型,如果不成功,嘿嘿,那你會收到一個false.

CURL

cURL 是利用URL語法規定來傳輸文件和數據的工具。他支持HTTP、FTP、TELNET。

為啥要使用cURL呢?

因為,如果我們有時候想靈活的獲取網頁上的內容,例如處理coockies、驗證、表單提交、文件上傳等等等等。那麼你就需要用到cURL.據說php有著功能強大的cURL庫(因為偶也說不清強大在哪裡啦,所以用了「據說」大笑)。

php使用cURL的選項基本步驟如下:

1、初始化

2、參數設置

3、頁面內容獲取或者操作

4、釋放句柄

看看下面這個簡單的例子吧。

[php] view plain copy

?php

//初始化curl

$ch = curl_init ();

/*

* 設置curl

* php手冊對於curl_setopt的解釋為:設置對於curl傳輸的操作

* curl_setopt有三個參數:資源(一般為你建立的curl句柄)、操作(你將對這個句柄作何操作)、參數(對於這個操作你給出的參數)

*/

//例如你想對百度進行某些操作

curl_setopt ( $ch, CURLOPT_URL, “”);

//現在看來你要向百度post數據

curl_setopt ( $ch, CURLOPT_POST, 1 );

/*給出了要post的數據:$post_string,post的數據可以是一個文件,

*那麼你需要以@加上文件的全路徑給出,或者你要post一些數據,

*那麼你可以按照數組形式給出,或者按照字元串給出,

*如果你想按照字元串形式給出,請把字元串urlencode,嘿嘿

*/

curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_string );

/*

*把curl操作的結果以字元串形式 從curl_exec ()返回,而不是直接就輸出了

*/

curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );

//得到操作返回結果

$result = curl_exec ( $ch );

//關閉curl句柄

curl_close ( $ch );

?

因為php的curl有很多操作,要都記住估計很困難,反正偶記不住啦,說些大家可能用的上的吧。大笑

獲取伺服器的一些信息

[php] view plain copy

?php

//初始化curl

$ch = curl_init ();

curl_setopt ( $ch, CURLOPT_URL, “”);

curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );

curl_exec($ch);

$info = curl_getinfo($ch);

var_dump($info);

?

通過上面的例子,你將會獲得如下信息:

「url」 //資源網路地址

「content_type」 //內容編碼

「http_code」 //HTTP狀態碼

「header_size」 //header的大小

「request_size」 //請求的大小

「filetime」 //文件創建時間

「ssl_verify_result」 //SSL驗證結果

「redirect_count」 //跳轉技術

「total_time」 //總耗時

「namelookup_time」 //DNS查詢耗時

「connect_time」 //等待連接耗時

「pretransfer_time」 //傳輸前準備耗時

「size_upload」 //上傳數據的大小

「size_download」 //下載數據的大小

「speed_download」 //下載速度

「speed_upload」 //上傳速度

「download_content_length」//下載內容的長度

「upload_content_length」 //上傳內容的長度

「starttransfer_time」 //開始傳輸的時間

「redirect_time」//重定向耗時

PHP_CURL使用詳解

CURL是PHP的一個擴展,利用該擴展可以實現伺服器之間的數據或文件傳輸,用來採集網路中的html網頁文件、其他伺服器提供介面數據等。

GET請求

POST請求

PHP如何開啟curl

開啟php curl函數庫的步驟

1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路徑*/

2).把php5/libeay32.dll,ssleay32.dll複製到系統目錄windows/下

3).重啟apache

配置php支持curl

curl是一個利用URL語法在命令行方式下工作的文件傳輸工具。它支持很多協議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同樣支持HTTPS認證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認證, HTTP上傳, 代理伺服器, cookies, 用戶名/密碼認證, 下載文件斷點續傳, 上載文件斷點續傳, http代理伺服器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理伺服器, 通過http代理伺服器上傳文件到FTP伺服器等等,功能十分強大。Windows操作系統下的網路螞蟻,網際快車(FlashGet)的功能它都可以做到。準確的說,curl支持文件的上傳和下載,所以是一個綜合傳輸工具,但是按照傳統,用戶習慣稱curl為下載工具。

配置方法:

1、拷貝PHP目錄中的libeay32.dll 和 ssleay32.dll 兩個文件到 system32 目錄。

2、修改php.ini:配置好 extension_dir ,去掉 extension = php_curl.dll 前面的分號。

—————————

php下擴展php_curl.dll的安裝

—————————

已經內置有php_curl.dll,在ext目錄下,此DLL用於支持SSL和zlib.

在php.ini中找到有extension=php_curl.dll, 去掉前面的注釋.

設置extension_dir=c:phpext, 刷新PHP頁面時報錯, 說找不到模塊php_curl.dll.

拷貝php_curl.dll 到windowssystem32,還是同樣的錯.

在網上找了一下,需要將:

libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll

都拷貝到system32目錄下,重啟IIS即可.

PHP如何在CLI模式下使用CURL庫

PHP只要安裝了curl擴展庫在cli模式下就可以直接使用

可以在命令行中輸入 php -i | grep curl 檢查是否已經安裝curl擴展,如果沒有安裝,可在php源碼包中找到curl的源碼進行編譯擴展,編譯完成後需要在php.ini中添加對應擴展

另外cli模式如果需要讀取php.ini配置需要將php.ini放到固定路徑中,具體路徑可通過 php -i 查看Loaded Configuration File參數

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/227423.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 16:29
下一篇 2024-12-09 16:29

相關推薦

發表回復

登錄後才能評論