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”
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答