0

いくつかのものを管理するために、curl を使用して自分の Web サイトのログインを作成したいと考えています。したがって、同じ Cookie を使用して複数の 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 が少し心配です。それとも、私が思いもよらなかったより良いバージョンがありますか?

4

2 に答える 2

0

を利用できるので、最初の方が優れていますKeep-Alive

2 番目のオプションでは、毎回 http 接続を開いたり閉じたりするため、この TCP ハンドシェイクには時間がかかります

NB: もちろん、これは同じサーバーへの接続にのみ関係します...

于 2012-06-20T17:34:25.837 に答える
0

次の curl オプションを追加して最初のものを使用します。

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");
于 2012-11-23T21:17:42.557 に答える