主頁 > 後端開發 > PHP CURL CURLOPT引數說明【轉】

PHP CURL CURLOPT引數說明【轉】

2020-09-13 12:43:24 後端開發

CURLOPT_RETURNTRANSFER選項:

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

如果成功只將結果回傳,不自動輸出任何內容,
如果失敗回傳FALSE

curl_setopt($ch, CURLOPT_RETURNTRANSFER,0); //或著不使用這個選項:

如果成功只回傳TRUE,自動輸出回傳的內容,
如果失敗回傳FALSE

PHP中CURL方法curl_setopt()函式的一些引數 .

bool curl_setopt (int ch, string option, mixed value)
curl_setopt()函式將為一個CURL會話設定選項,option引數是你想要的設定,value是這個選項給定的值,

下列選項的值將被作為長整形使用(在option引數中指定):
? CURLOPT_INFILESIZE: 當你上傳一個檔案到遠程站點,這個選項告訴PHP你上傳檔案的大小,
? CURLOPT_VERBOSE : 如果你想CURL報告每一件意外的事情,設定這個選項為一個非零值,
? CURLOPT_HEADER : 如果你想把一個頭包含在輸出中,設定這個選項為一個非零值,
? CURLOPT_NOPROGRESS: 如果你不會PHP為CURL傳輸顯示一個行程條,設定這個選項為一個非零值,注意:PHP自動設定這個選項為非零值,你應該僅僅為了除錯的目的來改變這個選項,
? CURLOPT_NOBODY : 如果你不想在輸出中包含body部分,設定這個選項為一個非零值,
? CURLOPT_FAILONERROR : 如果你想讓PHP在發生錯誤(HTTP代碼回傳大于等于300)時,不顯示,設定這個選項為一人非零值,默認行為是回傳一個正常頁,忽略代碼,
? CURLOPT_UPLOAD: 如果你想讓PHP為上傳做準備,設定這個選項為一個非零值,
? CURLOPT_POST : 如果你想PHP去做一個正規的HTTP POST,設定這個選項為一個非零值,這個POST是普通的 application/x-www-from-urlencoded 型別,多數被HTML表單使用,
? CURLOPT_FTPLISTONLY : 設定這個選項為非零值,PHP將列出FTP的目錄名串列,
? CURLOPT_FTPAPPEND : 設定這個選項為一個非零值,PHP將應用遠程檔案代替覆寫它,
? CURLOPT_NETRC : 設定這個選項為一個非零值,PHP將在你的 ~./netrc 檔案中查找你要建立連接的遠程站點的用戶名及密碼,
? CURLOPT_FOLLOWLOCATION : 設定這個選項為一個非零值(象 “Location: “)的頭,服務器會把它當做HTTP頭的一部分發送(注意這是遞回的,PHP將發送形如 “Location: “的頭),
? CURLOPT_PUT : 設定這個選項為一個非零值去用HTTP上傳一個檔案,要上傳這個檔案必須設定CURLOPT_INFILE和CURLOPT_INFILESIZE選項.
? CURLOPT_MUTE : 設定這個選項為一個非零值,PHP對于CURL函式將完全沉默,
? CURLOPT_TIMEOUT : 設定一個長整形數,作為最大延續多少秒,
? CURLOPT_LOW_SPEED_LIMIT: 設定一個長整形數,控制傳送多少位元組,
? CURLOPT_LOW_SPEED_TIME : 設定一個長整形數,控制多少秒傳送CURLOPT_LOW_SPEED_LIMIT規定的位元組數,
? CURLOPT_RESUME_FROM : 傳遞一個包含位元組偏移地址的長整形引數,(你想轉移到的開始表單),
? CURLOPT_SSLVERSION: 傳遞一個包含SSL版本的長引數,默認PHP將被它自己努力的確定,在更多的安全中你必須手工設定,
? CURLOPT_TIMECONDITION : 傳遞一個長引數,指定怎么處理CURLOPT_TIMEVALUE引數,你可以設定這個引數為TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE,這僅用于HTTP,
? CURLOPT_TIMEVALUE : 傳遞一個從1970-1-1開始到現在的秒數,這個時間將被CURLOPT_TIMEVALUE選項作為指定值使用,或被默認TIMECOND_IFMODSINCE使用,


下列選項的值將被作為字串:
? CURLOPT_URL: 這是你想用PHP取回的URL地址,你也可以在用curl_init()函式初始化時設定這個選項,
? CURLOPT_USERPWD : 傳遞一個形如[username]:[password]風格的字串,作用PHP去連接,
? CURLOPT_PROXYUSERPWD : 傳遞一個形如[username]:[password] 格式的字串去連接HTTP代理,
? CURLOPT_RANGE : 傳遞一個你想指定的范圍,它應該是”X-Y”格式,X或Y是被除外的,HTTP傳送同樣支持幾個間隔,用逗句來分隔(X-Y,N-M),
? CURLOPT_POSTFIELDS : 傳遞一個作為HTTP “POST”操作的所有資料的字串,
? CURLOPT_REFERER: 在HTTP請求中包含一個”referer”頭的字串,
? CURLOPT_USERAGENT : 在HTTP請求中包含一個”user-agent”頭的字串,
? CURLOPT_FTPPORT: 傳遞一個包含被ftp “POST”指令使用的IP地址,這個POST指令告訴遠程服務器去連接我們指定的IP地址,這個字串可以是一個IP地址,一個主機名,一個網路界面名(在UNIX下),或是‘-'(使用系統默認IP地址),
? CURLOPT_COOKIE : 傳遞一個包含HTTP cookie的頭連接,
? CURLOPT_SSLCERT : 傳遞一個包含PEM格式證書的字串,
? CURLOPT_SSLCERTPASSWD : 傳遞一個包含使用CURLOPT_SSLCERT證書必需的密碼,
? CURLOPT_COOKIEFILE : 傳遞一個包含cookie資料的檔案的名字的字串,這個cookie檔案可以是Netscape格式,或是堆存在檔案中的HTTP風格的頭,
? CURLOPT_CUSTOMREQUEST : 當進行HTTP請求時,傳遞一個字符被GET或HEAD使用,為進行DELETE或其它操作是有益的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request. 注意: 在確認你的服務器支持命令先不要去這樣做,下列的選項要求一個檔案描述(通過使用fopen()函式獲得):
? CURLOPT_FILE: 這個檔案將是你放置傳送的輸出檔案,默認是STDOUT.
? CURLOPT_INFILE : 這個檔案是你傳送過來的輸入檔案,
? CURLOPT_WRITEHEADER : 這個檔案寫有你輸出的頭部分,
? CURLOPT_STDERR : 這個檔案寫有錯誤而不是stderr,用來獲取需要登錄的頁面的例子,當前做法是每次或許都登錄一次,有需要的人再做改進了.

例一:

$cookie_jar = tempnam('./tmp','cookie');
$ch = curl_init(); curl_setopt($ch,CURLOPT_URL, 'http://******');
curl_setopt($ch, CURLOPT_POST, 1);
$request = 'email_address=&password=&action=';
curl_setopt($ch, CURLOPT_POSTFIELDS, $request); //把回傳來的cookie資訊保存在$cookie_jar檔案中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); //設定回傳的資料是否自動顯示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //設定是否顯示頭資訊
curl_setopt($ch, CURLOPT_HEADER, false); //設定是否輸出頁面內容
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_exec($ch);
curl_close($ch); //get data after login

例二:

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, 'http://*****');
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
$orders = curl_exec($ch2);
echo '';
echo strip_tags($orders);
echo '';
curl_close($ch2); 實踐證明很穩定:)

例三:

set_time_limit(0);
function _rand()
{
    $length = 26;
    $chars = "0123456789abcdefghijklmnopqrstuvwxyz";
    $max = strlen($chars) - 1;
    mt_srand((double)microtime() * 1000000);
    $string = '';
    for ($i = 0; $i < $length; $i++) {
        $string .= $chars[mt_rand(0, $max)];
    }
    return $string;
}

$HTTP_SESSION = _rand();
echo $HTTP_SESSION;
$HTTP_Server = "www.baidu.com";
$HTTP_URL = "/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://" . $HTTP_Server . $HTTP_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
//curl_setopt($ch,CURLOPT_COOKIE,$HTTP_SESSION);
$res = curl_exec($ch);
curl_close($ch);
print_r($res);

刷論壇代碼:
1、抓cookies程式:

$URL = "http://www.yoururl.com/bbs/login.asp?action=chk";
//填入論壇的登陸頁面地址
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_REFERER, "http://www.hxfoods.com/bbs/login.asp");
//設定,訪問頁面的來源地址
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=→→敢死隊→&password=168168');
//分析登陸頁面,把用戶名,密碼分別對應起來
curl_setopt($ch, CURLOPT_HEADER, true);
//使能顯示http頭,
curl_exec($ch);
if (curl_errno($ch)) {
    print curl_error($ch);
} else {
    curl_close($ch);
}

2、刷樓了:

$URL = "http://www.yoururl.com/bbs/login.asp?action=chk";
//填入論壇的登陸頁面地址
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_REFERER, "http://www.hxfoods.com/bbs/login.asp");
//設定,訪問頁面的來源地址
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=→→敢死隊→&password=168168');
//分析登陸頁面,把用戶名,密碼分別對應起來
curl_setopt($ch, CURLOPT_HEADER, true);
//使能顯示http頭,
curl_exec($ch);
if (curl_errno($ch)) {
    print curl_error($ch);
} else {
    curl_close($ch);
}

curl_close — 關閉一個curl會話
curl_copy_handle — 拷貝一個curl連接資源的所有內容和引數
curl_errno — 回傳一個包含當前會話錯誤資訊的數字編號
curl_error — 回傳一個包含當前會話錯誤資訊的字串
curl_exec — 執行一個curl會話
curl_getinfo — 獲取一個curl連接資源句柄的資訊
curl_init — 初始化一個curl會話
curl_multi_add_handle — 向curl批處理會話中添加單獨的curl句柄資源
curl_multi_close — 關閉一個批處理句柄資源
curl_multi_exec — 決議一個curl批處理句柄
curl_multi_getcontent — 回傳獲取的輸出的文本流
curl_multi_info_read — 獲取當前決議的curl的相關傳輸資訊
curl_multi_init — 初始化一個curl批處理句柄資源
curl_multi_remove_handle — 移除curl批處理句柄資源中的某個句柄資源
curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
curl_setopt_array — 以陣列的形式為一個curl設定會話引數
curl_setopt — 為一個curl設定會話引數
curl_version — 獲取curl相關的版本資訊
curl_init()函式的作用初始化一個curl會話,curl_init()函式唯一的一個引數是可選的,表示一個url地址,
curl_exec()函式的作用是執行一個curl會話,唯一的引數是curl_init()函式回傳的句柄,
curl_close()函式的作用是關閉一個curl會話,唯一的引數是curl_init()函式回傳的句柄,

$ch = curl_init("http://www.baidu.com/");
curl_exec($ch);
curl_close($ch);

curl_version()函式的作用是獲取curl相關的版本資訊,curl_version()函式有一個引數,不清楚是做什么的

print_r(curl_version());

curl_getinfo()函式的作用是獲取一個curl連接資源句柄的資訊,curl_getinfo()函式有兩個引數,第一個引數是curl的資源句柄,第二個引數是下面一些常量:

$ch = curl_init("http://www.baidu.com/");
print_r(curl_getinfo($ch));

可選的常量包括:
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 Result of SSL certification verification requested by setting CURLOPT_SSL_VERIFYPEER
CURLINFO_CONTENT_LENGTH_DOWNLOAD 從Content-Length: field中讀取的下載內容長度
CURLINFO_CONTENT_LENGTH_UPLOAD 上傳內容大小的說明
CURLINFO_CONTENT_TYPE 下載內容的“Content-type”值,NULL表示服務器沒有發送有效的“Content-Type: header”

curl_setopt() 函式的作用是為一個curl設定會話引數,curl_setopt_array()函式的作用是以陣列的形式為一個curl設定會話引數,

$ch = curl_init();
$fp = fopen("example_homepage.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
$options = array(
CURLOPT_URL => 'http://www.baidu.com/',
CURLOPT_HEADER => false
);
curl_setopt_array($ch, $options);
curl_exec($ch);
curl_close($ch);
fclose($fp);

可設定的引數有:
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 TRUE to use EPRT (and LPRT) when doing active FTP downloads. Use FALSE to disable EPRT and LPRT and use PORT only.
Added in PHP 5.0.0.
CURLOPT_FTP_USE_EPSV TRUE to first try an EPSV command for FTP transfers before reverting back to PASV. Set to FALSE to disable EPSV.
CURLOPT_FTPAPPEND TRUE to append to the remote file instead of overwriting it.
CURLOPT_FTPASCII An alias of CURLOPT_TRANSFERTEXT. Use that instead.
CURLOPT_FTPLISTONLY TRUE to only list the names of an FTP directory.
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 FALSE to stop cURL from verifying the peer's certificate. Alternate certificates to verify against can be specified with the CURLOPT_CAINFO option or a certificate directory can be specified with the CURLOPT_CAPATH option. CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2). TRUE by default as of cURL 7.10. Default bundle installed as of cURL 7.10.
CURLOPT_TRANSFERTEXT TRUE to use ASCII mode for FTP transfers. For LDAP, it retrieves data in plain text instead of HTML. On Windows systems, it will not set STDOUT to binary mode.
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 The FTP authentication method (when is activated): CURLFTPAUTH_SSL (try SSL first), CURLFTPAUTH_TLS (try TLS first), or CURLFTPAUTH_DEFAULT (let cURL decide).
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 The HTTP authentication method(s) to use for the proxy connection. Use the same bitmasks as described in CURLOPT_HTTPAUTH. For proxy authentication, only CURLAUTH_BASIC and CURLAUTH_NTLM are currently supported.

CURLOPT_PROXYPORT The port number of the proxy to connect to. This port number can also be set in CURLOPT_PROXY.
CURLOPT_PROXYTYPE Either CURLPROXY_HTTP (default) or CURLPROXY_SOCKS5.
CURLOPT_RESUME_FROM 在恢復傳輸時傳遞一個位元組偏移量(用來斷點續傳)

CURLOPT_SSL_VERIFYHOST
1 to check the existence of a common name in the SSL peer certificate.
2 to check the existence of a common name and also verify that it matches the hostname provided.
CURLOPT_SSLVERSION The SSL version (2 or 3) to use. By default PHP will try to determine this itself, although in some cases this must be set manually.
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 The name of a file holding one or more certificates to verify the peer with. This only makes sense when used in combination with CURLOPT_SSL_VERIFYPEER.
CURLOPT_CAPATH A directory that holds multiple CA certificates. Use this option alongside CURLOPT_SSL_VERIFYPEER.
CURLOPT_COOKIE 設定HTTP請求中“Set-Cookie:”部分的內容,
CURLOPT_COOKIEFILE 包含cookie資訊的檔案名稱,這個cookie檔案可以是Netscape格式或者HTTP風格的header資訊,
CURLOPT_COOKIEJAR 連接關閉以后,存放cookie資訊的檔案名稱
CURLOPT_CUSTOMREQUEST A custom request method to use instead of "GET" or "HEAD" when doing a HTTP request. This is useful for doing "DELETE" or other, more obscure HTTP requests. Valid values are things like "GET", "POST", "CONNECT" and so on; i.e. Do not enter a whole HTTP request line here. For instance, entering "GET /index.html HTTP/1.0\r\n\r\n" would be incorrect.
Note: Don't do this without making sure the server supports the custom request method first.

CURLOPT_EGBSOCKET Like CURLOPT_RANDOM_FILE, except a filename to an Entropy Gathering Daemon socket.
CURLOPT_ENCODING header中“Accept-Encoding: ”部分的內容,支持的編碼格式為:"identity","deflate","gzip",如果設定為空字串,則表示支持所有的編碼格式

CURLOPT_FTPPORT The value which will be used to get the IP address to use for the FTP "POST" instruction. The "POST" instruction tells the remote server to connect to our specified IP address. The string may be a plain IP address, a hostname, a network interface name (under Unix), or just a plain '-' to use the systems default IP address.

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 A list of ciphers to use for SSL. For example, RC4-SHA and TLSv1 are valid cipher lists.
CURLOPT_SSLCERT 傳遞一個包含PEM格式證書的字串,
CURLOPT_SSLCERTPASSWD 傳遞一個包含使用CURLOPT_SSLCERT證書必需的密碼,
CURLOPT_SSLCERTTYPE The format of the certificate. Supported formats are "PEM" (default), "DER", and "ENG".
CURLOPT_SSLENGINE The identifier for the crypto engine of the private SSL key specified in CURLOPT_SSLKEY.
CURLOPT_SSLENGINE_DEFAULT The identifier for the crypto engine used for asymmetric crypto operations.
CURLOPT_SSLKEY The name of a file containing a private SSL key.
CURLOPT_SSLKEYPASSWD The secret password needed to use the private SSL key specified in CURLOPT_SSLKEY.
Note: Since this option contains a sensitive password, remember to keep the PHP script it is contained within safe.
CURLOPT_SSLKEYTYPE
The key type of the private SSL key specified in CURLOPT_SSLKEY. Supported key types are "PEM" (default), "DER", and "ENG".
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
An array of FTP commands to execute on the server after the FTP request has been performed.
CURLOPT_QUOTE
An array of FTP commands to execute on the server prior to the FTP request.
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的資源句柄,第二個是寫入的資料,資料寫入必須依賴這個函式,回傳精確的已寫入資料的大小

curl_copy_handle()函式的作用是拷貝一個curl連接資源的所有內容和引數

$ch = curl_init("http://www.baidu.com/");
$another = curl_copy_handle($ch);
curl_exec($another);
curl_close($another);
curl_error()函式的作用是回傳一個包含當前會話錯誤資訊的字串,
curl_errno()函式的作用是回傳一個包含當前會話錯誤資訊的數字編號,
curl_multi_init()函式的作用是初始化一個curl批處理句柄資源,
curl_multi_add_handle()函式的作用是向curl批處理會話中添加單獨的curl句柄資源,curl_multi_add_handle()函式有兩個引數,第一個引數表示一個curl批處理句柄資源,第二個引數表示一個單獨的curl句柄資源,
curl_multi_exec()函式的作用是決議一個curl批處理句柄,curl_multi_exec()函式有兩個引數,第一個引數表示一個批處理句柄資源,第二個引數是一個參考值的引數,表示剩余需要處理的單個的curl句柄資源數量,
curl_multi_remove_handle()函式表示移除curl批處理句柄資源中的某個句柄資源,curl_multi_remove_handle()函式有兩個引數,第一個引數表示一個curl批處理句柄資源,第二個引數表示一個單獨的curl句柄資源,
curl_multi_close()函式的作用是關閉一個批處理句柄資源,

$ch1 = curl_init();
$ch2 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://www.baidu.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.google.com/");
curl_setopt($ch2, CURLOPT_HEADER, 0);
$mh = curl_multi_init();
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
do {
curl_multi_exec($mh,$flag);
} while ($flag > 0);
curl_multi_remove_handle($mh,$ch1);
curl_multi_remove_handle($mh,$ch2);
curl_multi_close($mh);
curl_multi_getcontent()函式的作用是在設定了CURLOPT_RETURNTRANSFER的情況下,回傳獲取的輸出的文本流,
curl_multi_info_read()函式的作用是獲取當前決議的curl的相關傳輸資訊,
curl_multi_select()
Get all the sockets associated with the cURL extension, which can then be "selected"

文章轉自:https://www.jb51.net/article/41831.htm
更多參考:
https://www.php.net/manual/zh/function.curl-setopt.php

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24460.html

標籤:PHP

上一篇:phpstudy無法啟用apache的解決辦法

下一篇:PHP錯誤與例外處理【轉】

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more