1.CURL是利用URL語法在命令行方式下工作的開源文件傳輸工具。
2.它被廣泛應用在Unix、多種Linux發行版中,并且有DOS和Win32、Win64下的移植版本。
3.它支持很多協議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。
4.CURL是瑞典CURLl組織開發的,您可以訪問: http://curl.haxx. se 獲取它的源代碼和相關說明。
5.PHP CURL函數列表:
| 函數 | 描述 | 
|---|---|
6.CURL開發基本步驟
(1)初始化:curl_init()
(2)設置變量:curl_setopt()或curl_setopt_array()
(3)執行并獲取結果:curl_exec()
(4)釋放CURL句柄:curl_close()
7.CURLOPT參數總結:
CURLOPT_AUTOREFERER 
自動設置header中的referer信息 
CURLOPT_BINARYTRANSFER 
在啟用CURLOPT_RETURNTRANSFER時候將獲取數據返回 
CURLOPT_COOKIESESSION 
啟用時curl會僅僅傳遞一個session cookie,忽略其他的cookie,默認狀況下curl會將所有的cookie返回給服務端。session cookie是指那些用來判斷服務器端的session是否有效而存在的cookie。
CURLOPT_CRLF 
啟用時將Unix的換行符轉換成回車換行符。 
CURLOPT_DNS_USE_GLOBAL_CACHE 
啟用時會啟用一個全局的DNS緩存,此項為線程安全的,并且默認為true。 
CURLOPT_FAILONERROR 
顯示HTTP狀態碼,默認行為是忽略編號小于等于400的HTTP信息 
CURLOPT_FILETIME 
啟用時會嘗試修改遠程文檔中的信息。結果信息會通過curl_getinfo()函數的CURLINFO_FILETIME選項返回。 
CURLOPT_FOLLOWLOCATION 
啟用時會將服務器服務器返回的“Location:”放在header中遞歸的返回給服務器,使用CURLOPT_MAXREDIRS可以限定遞歸返回的數量。 
CURLOPT_FORBID_REUSE 
在完成交互以后強迫斷開連接,不能重用。 
CURLOPT_FRESH_CONNECT 
強制獲取一個新的連接,替代緩存中的連接。 
CURLOPT_FTP_USE_EPRT 
CURLOPT_FTP_USE_EPSV 
CURLOPT_FTPAPPEND 
CURLOPT_FTPASCII 
CURLOPT_FTPLISTONLY
CURLOPT_HEADER 
啟用時會將頭文件的信息作為數據流輸出。 
CURLOPT_HTTPGET 
啟用時會設置HTTP的method為GET,因為GET是默認是,所以只在被修改的情況下使用。 
CURLOPT_HTTPPROXYTUNNEL 
啟用時會通過HTTP代理來傳輸。 
CURLOPT_MUTE 
講curl函數中所有修改過的參數恢復默認值。 
CURLOPT_NETRC 
在連接建立以后,訪問~/.netrc文件獲取用戶名和密碼信息連接遠程站點。 
CURLOPT_NOBODY 
啟用時將不對HTML中的body部分進行輸出。 
CURLOPT_NOPROGRESS 
啟用時關閉curl傳輸的進度條,此項的默認設置為true 
CURLOPT_NOSIGNAL 
啟用時忽略所有的curl傳遞給php進行的信號。在SAPI多線程傳輸時此項被默認打開。 
CURLOPT_POST 
啟用時會發送一個常規的POST請求,類型為:application/x-www-form-urlencoded,就像表單提交的一樣。 
CURLOPT_PUT 
啟用時允許HTTP發送文件,必須同時設置CURLOPT_INFILE和CURLOPT_INFILESIZE 
CURLOPT_RETURNTRANSFER 
講curl_exec()獲取的信息以文件流的形式返回,而不是直接輸出。 
CURLOPT_SSL_VERIFYPEER 
CURLOPT_TRANSFERTEXT
CURLOPT_UNRESTRICTED_AUTH 
在使用CURLOPT_FOLLOWLOCATION產生的header中的多個locations中持續追加用戶名和密碼信息,即使域名已發生改變。 
CURLOPT_UPLOAD 
啟用時允許文件傳輸 
CURLOPT_VERBOSE 
啟用時會匯報所有的信息,存放在STDERR或指定的CURLOPT_STDERR中 
CURLOPT_BUFFERSIZE 
每次獲取的數據中讀入緩存的大小,這個值每次都會被填滿。 
CURLOPT_CLOSEPOLICY 
不是CURLCLOSEPOLICY_LEAST_RECENTLY_USED就是CURLCLOSEPOLICY_OLDEST,還存在另外三個,但是curl暫時還不支持。.
CURLOPT_CONNECTTIMEOUT 
在發起連接前等待的時間,如果設置為0,則不等待。 
CURLOPT_DNS_CACHE_TIMEOUT 
設置在內存中保存DNS信息的時間,默認為120秒。 
CURLOPT_FTPSSLAUTH 
CURLOPT_HTTP_VERSION 
設置curl使用的HTTP協議,CURL_HTTP_VERSION_NONE(讓curl自己判斷),CURL_HTTP_VERSION_1_0(HTTP/1.0),CURL_HTTP_VERSION_1_1(HTTP/1.1)
CURLOPT_HTTPAUTH 
使用的HTTP驗證方法,可選的值有:CURLAUTH_BASIC,CURLAUTH_DIGEST,CURLAUTH_GSSNEGOTIATE,CURLAUTH_NTLM,CURLAUTH_ANY,CURLAUTH_ANYSAFE,可以使用“|”操作符分隔多個值,curl讓服務器選擇一個支持最好的值,CURLAUTH_ANY等價于CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM,CURLAUTH_ANYSAFE等價于CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 
CURLOPT_INFILESIZE 
設定上傳文件的大小 
CURLOPT_LOW_SPEED_LIMIT 
當傳輸速度小于CURLOPT_LOW_SPEED_LIMIT時,PHP會根據CURLOPT_LOW_SPEED_TIME來判斷是否因太慢而取消傳輸。 
CURLOPT_LOW_SPEED_TIME 
The number of seconds the transfer should be below CURLOPT_LOW_SPEED_LIMIT for PHP to consider the transfer too slow and abort.
當傳輸速度小于CURLOPT_LOW_SPEED_LIMIT時,PHP會根據CURLOPT_LOW_SPEED_TIME來判斷是否因太慢而取消傳輸。 
CURLOPT_MAXCONNECTS 
允許的最大連接數量,超過是會通過CURLOPT_CLOSEPOLICY決定應該停止哪些連接 
CURLOPT_MAXREDIRS 
指定最多的HTTP重定向的數量,這個選項是和CURLOPT_FOLLOWLOCATION一起使用的。 
CURLOPT_PORT 
一個可選的用來指定連接端口的量 
CURLOPT_PROXYAUTH 
CURLOPT_PROXYPORT
CURLOPT_PROXYTYPE 
CURLOPT_RESUME_FROM 
在恢復傳輸時傳遞一個字節偏移量(用來斷點續傳) 
CURLOPT_SSL_VERIFYHOST 
CURLOPT_SSLVERSION 
CURLOPT_TIMECONDITION 
如果在CURLOPT_TIMEVALUE指定的某個時間以后被編輯過,則使用CURL_TIMECOND_IFMODSINCE返回頁面,如果沒有被修改過,并且CURLOPT_HEADER為true,則返回一個"304 Not Modified"的header,CURLOPT_HEADER為false,則使用CURL_TIMECOND_ISUNMODSINCE,默認值為CURL_TIMECOND_IFMODSINCE
CURLOPT_TIMEOUT 
設置curl允許執行的最長秒數 
CURLOPT_TIMEVALUE 
設置一個CURLOPT_TIMECONDITION使用的時間戳,在默認狀態下使用的是CURL_TIMECOND_IFMODSINCE 
CURLOPT_CAINFO 
CURLOPT_CAPATH 
CURLOPT_COOKIE 
設定HTTP請求中“Set-html' target='_blank'>Cookie:”部分的內容。 
CURLOPT_COOKIEFILE 
包含cookie信息的文件名稱,這個cookie文件可以是Netscape格式或者HTTP風格的header信息。 
CURLOPT_COOKIEJAR 
連接關閉以后,存放cookie信息的文件名稱 
CURLOPT_CUSTOMREQUEST 
CURLOPT_EGBSOCKET 
CURLOPT_ENCODING 
header中“Accept-Encoding: ”部分的內容,支持的編碼格式為:"identity","deflate","gzip"。如果設置為空字符串,則表示支持所有的編碼格式
CURLOPT_FTPPORT 
CURLOPT_INTERFACE 
在外部網絡接口中使用的名稱,可以是一個接口名,IP或者主機名。 
CURLOPT_KRB4LEVEL 
KRB4(Kerberos 4)安全級別的設置,可以是一下幾個值之一:"clear","safe","confidential","private"。默認的值為"private",設置為null的時候表示禁用KRB4,現在KRB4安全僅能在FTP傳輸中使用。
CURLOPT_POSTFIELDS 
在HTTP中的“POST”操作。如果要傳送一個文件,需要一個@開頭的文件名 
CURLOPT_PROXY 
設置通過的HTTP代理服務器 
CURLOPT_PROXYUSERPWD 
連接到代理服務器的,格式為“[username]:[password]”的用戶名和密碼。 
CURLOPT_RANDOM_FILE 
設定存放SSL用到的隨機數種子的文件名稱 
CURLOPT_RANGE 
設置HTTP傳輸范圍,可以用“X-Y”的形式設置一個傳輸區間,如果有多個HTTP傳輸,則使用逗號分隔多個值,形如:"X-Y,N-M"。 
CURLOPT_REFERER 
設置header中"Referer: " 部分的值。 
CURLOPT_SSL_CIPHER_LIST 
CURLOPT_SSLCERT 
傳遞一個包含PEM格式證書的字符串。 
CURLOPT_SSLCERTPASSWD 
傳遞一個包含使用CURLOPT_SSLCERT證書必需的密碼。 
CURLOPT_SSLCERTTYPE 
CURLOPT_SSLENGINE 
CURLOPT_SSLENGINE_DEFAULT 
CURLOPT_SSLKEY 
CURLOPT_SSLKEYPASSWD 
CURLOPT_SSLKEYTYPE 
CURLOPT_URL 
需要獲取的URL地址,也可以在PHP的curl_init()函數中設置。 
CURLOPT_USERAGENT 
在HTTP請求中包含一個”user-agent”頭的字符串。 
CURLOPT_USERPWD 
傳遞一個連接中需要的用戶名和密碼,格式為:“[username]:[password]”。 
CURLOPT_HTTP200ALIASES 
設置不再以error的形式來處理HTTP 200的響應,格式為一個數組。 
CURLOPT_HTTPHEADER 
設置一個header中傳輸內容的數組。 
CURLOPT_POSTQUOTE 
CURLOPT_QUOTE 
CURLOPT_FILE 
設置輸出文件的位置,值是一個資源類型,默認為STDOUT (瀏覽器)。 
CURLOPT_INFILE 
在上傳文件的時候需要讀取的文件地址,值是一個資源類型。 
CURLOPT_STDERR 
設置一個錯誤輸出地址,值是一個資源類型,取代默認的STDERR。 
CURLOPT_WRITEHEADER 
設置header部分內容的寫入的文件地址,值是一個資源類型。 
CURLOPT_HEADERFUNCTION 
設置一個回調函數,這個函數有兩個參數,第一個是curl的資源句柄,第二個是輸出的header數據。header數據的輸出必須依賴這個函數,返回已寫入的數據大小。 
CURLOPT_PASSWDFUNCTION 
設置一個回調函數,有三個參數,第一個是curl的資源句柄,第二個是一個密碼提示符,第三個參數是密碼長度允許的最大值。返回密碼的值。 
CURLOPT_READFUNCTION 
設置一個回調函數,有兩個參數,第一個是curl的資源句柄,第二個是讀取到的數據。數據讀取必須依賴這個函數。返回讀取數據的大小,比如0或者EOF。 
CURLOPT_WRITEFUNCTION 
設置一個回調函數,有兩個參數,第一個是curl的資源句柄,第二個是寫入的數據。數據寫入必須依賴這個函數。返回精確的已寫入數據的大小
8.CURLINFO參數總結:
CURLINFO_EFFECTIVE_URL 
最后一個有效的url地址 
CURLINFO_HTTP_CODE 
最后一個收到的HTTP代碼 
CURLINFO_FILETIME 
遠程獲取文檔的時間,如果無法獲取,則返回值為“-1” 
CURLINFO_TOTAL_TIME 
最后一次傳輸所消耗的時間 
CURLINFO_NAMELOOKUP_TIME 
名稱解析所消耗的時間 
CURLINFO_CONNECT_TIME 
建立連接所消耗的時間 
CURLINFO_PRETRANSFER_TIME 
從建立連接到準備傳輸所使用的時間 
CURLINFO_STARTTRANSFER_TIME 
從建立連接到傳輸開始所使用的時間 
CURLINFO_REDIRECT_TIME 
在事務傳輸開始前重定向所使用的時間 
CURLINFO_SIZE_UPLOAD 
上傳數據量的總值 
CURLINFO_SIZE_DOWNLOAD 
下載數據量的總值 
CURLINFO_SPEED_DOWNLOAD 
平均下載速度 
CURLINFO_SPEED_UPLOAD 
平均上傳速度 
CURLINFO_HEADER_SIZE 
header部分的大小 
CURLINFO_HEADER_OUT 
發送請求的字符串 
CURLINFO_REQUEST_SIZE 
在HTTP請求中有問題的請求的大小 
CURLINFO_SSL_VERIFYRESULT 
CURLINFO_CONTENT_LENGTH_DOWNLOAD 
從Content-Length: field中讀取的下載內容長度 
CURLINFO_CONTENT_LENGTH_UPLOAD 
上傳內容大小的說明 
CURLINFO_CONTENT_TYPE 
下載內容的“Content-type”值,NULL表示服務器沒有發送有效的“Content-Type: header”
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答