2012-06-20 39 views
0

我想用curl爲我的網站創建一個登錄名來管理一些東西。 因此,我必須使用相同的cookie發出多個curl請求完成一個PHP後的幾個curl請求

現在我想知道哪些代碼更好地實現此目的。 這是更好的:

$CookieFile = 'cookies/'. uniqid() . '.txt'; 
file_put_contents($CookieFile, ''); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $Url); 
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFile); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFile); 
$result1 = curl_exec($ch); 

curl_setopt($ch, CURLOPT_URL, $Url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData2); 
$result2 = curl_exec($ch); 
curl_close($ch); 

或者是更好的做這樣

$CookieFile = 'cookies/'. uniqid() . '.txt'; 
file_put_contents($CookieFile, ''); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $Url); 
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFile); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFile); 
$result1 = curl_exec($ch); 
curl_close($ch); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $Url); 
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData2); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFile); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFile); 
$result2 = curl_exec($ch); 
curl_close($ch); 

我不太清楚哪個版本更好,我有點擔心的cookie。 還是有沒有更好的版本,我沒有想到?

回答

0

第一個更好,因爲它可以利用Keep-Alive

第二個選項打開每次/關閉HTTP連接,這TCP握手耗時

注意:這僅僅是對同一服務器發出當然,連接相關...

0

使用第一個增加了以下捲曲選項:

curl_setopt($ch, CURLOPT_FORBID_REUSE, 0); 
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 0); 
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, "valid user agent");