php各版本curl的區別(php版本選擇)

本文目錄一覽:

php curl 和 purl的區別

區別就是,curl是php中一個用來發送http請求的擴展,而purl是一個莫名其妙,聽都沒聽說過的神奇的玩意兒!

PHP的curl模塊和python的pycurl模塊的區別

php的curl,是在php發布程序的ext文件中,作為一個php自帶的支持,需要改寫php的配置文件,修改php.ini,將;extension=php_curl.dll前的分號去掉。

python的pycurl,不是python自帶的支持程序,python在做爬蟲一般都是用urllib,urllib2,twisted等,比較少的使用pycurl.安裝略.

c的curl,是前面2個語言的curl父程序,是c的curl才有了php的curl和python的pycurl,同時,python的pycurl

文檔說明了只實現了部分功能,即是一個c的curl的閹割版。淚奔,原來用了那麼長時間的東西,連冰山一角都沒觸碰,或者python的pycurl也只

是會用其中的一個或少數幾個功能。

php curl有版本區分嗎

沒有,curl只是php里的一個擴展,沒有版本之分,他只受php版本的影響,但目前沒有發現crul因php版本產生什麼異常

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」//重定向耗時

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JD9ZX的頭像JD9ZX
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python中new和init的區別

    new和init都是Python中常用的魔法方法,它們分別負責對象的創建和初始化,本文將從多個角度詳細闡述它們的區別。 一、創建對象 new方法是用來創建一個對象的,它是一個類級別…

    編程 2025-04-29
  • Git secbit:一種新型的安全Git版本

    Git secbit是一種新型的安全Git版本,它在保持Git原有功能的同時,針對Git存在的安全漏洞做出了很大的改進。下面我們將從多個方面對Git secbit做詳細地闡述。 一…

    編程 2025-04-29
  • Sublime Test與Python的區別

    Sublime Text是一款流行的文本編輯器,而Python是一種廣泛使用的編程語言。雖然Sublime Text可以用於編寫Python代碼,但它們之間有很多不同之處。接下來從…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字元命令行的語言…

    編程 2025-04-29
  • Python中while語句和for語句的區別

    while語句和for語句是Python中兩種常見的循環語句,它們都可以用於重複執行一段代碼。然而,它們的語法和適用場景有所不同。本文將從多個方面詳細闡述Python中while語…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟體開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 如何將Java項目分成Modules並使用Git進行版本控制

    本文將向您展示如何將Java項目分成模塊,並使用Git對它們進行版本控制。分割Java項目可以使其更容易維護和拓展。Git版本控制還可以讓您跟蹤項目的發展並協作開發。 一、為什麼要…

    編程 2025-04-28
  • TensorFlow和Python的區別

    TensorFlow和Python是現如今最受歡迎的機器學習平台和編程語言。雖然兩者都處於機器學習領域的主流陣營,但它們有很多區別。本文將從多個方面對TensorFlow和Pyth…

    編程 2025-04-28

發表回復

登錄後才能評論