curl_upkeep()は、接続が複数のリクエスト間で時期尚早に閉じられないように、その関連する接続情報を処理するために使用される比較的まれなCurl関数です。その目的は、複数のリクエストでマルチプレックス接続を行い、要求するたびに接続を再確立し、それにより効率を改善することです。
効果:
既存のカールハンドルを維持することにより、接続の再確立を減らします。
短期間で頻繁に作成する必要がある場合、同じサーバーとの対話に適しています。
シナリオを使用してください:
同じ接続を介して複数のリクエストをサーバーに送信する必要がある場合、要求するたびに接続を再開する代わりに、 curl_upkeep()を使用すると、オーバーヘッドを減らすことができます。
HTTP Keep-Alive環境では、 curl_upkeep()は、次回の再利用のために接続をアクティブに保つことができます。
curl_upkeep()を使用したサンプルコードは次のとおりです。
<?php
$ch = curl_init(); // 初期化 cURL ハンドル
curl_setopt($ch, CURLOPT_URL, "http://m66.net/api/data"); // 設定 URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 返品結果
// 最初のリクエストを行います
$response = curl_exec($ch);
echo "最初のリクエスト結果: $response";
// 使用 curl_upkeep 接続を維持します
curl_upkeep($ch);
// 2番目のリクエストを行います,既存の接続を再利用します
curl_setopt($ch, CURLOPT_URL, "http://m66.net/api/otherdata");
$response = curl_exec($ch);
echo "2番目の要求の結果: $response";
// 閉鎖 cURL ハンドル
curl_close($ch);
?>
curl_reset()関数は、Curlハンドルをリセットし、初期化された状態に戻すために使用されます。 curl_upkeep()とは異なり、接続を維持すると、 curl_reset()は現在のcurlハンドルを完全にリセットします。つまり、すべてのオプションがクリアされ、接続情報が失われます。
効果:
カールハンドルの構成をクリアし、すべてのオプションをリセットし、初期状態に戻ります。
ハンドルを閉じずにカールハンドルを再構成する必要があるときに使用します。
シナリオを使用してください:
Curlハンドルを使用して複数の異なるリクエストを送信し、各リクエスト間で以前の構成をクリアする必要がある場合、 curl_reset()を使用できます。
リクエストURLの変更や以前の構成を保持したい場合に他の設定の変更など、カールハンドルのオプションを再構成する予定がある場合。
curl_reset()を使用したサンプルコードは次のとおりです。
<?php
$ch = curl_init(); // 初期化 cURL ハンドル
// 最初のリクエスト
curl_setopt($ch, CURLOPT_URL, "http://m66.net/api/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
echo "最初のリクエスト結果: $response";
// 使用 curl_reset 重置ハンドル
curl_reset($ch);
// 2番目のリクエスト,再構成オプション
curl_setopt($ch, CURLOPT_URL, "http://m66.net/api/otherdata");
$response = curl_exec($ch);
echo "2番目の要求の結果: $response";
// 閉鎖 cURL ハンドル
curl_close($ch);
?>
特性 | curl_upkeep() | curl_reset() |
---|---|---|
関数 | 構成をリセットせずに既存の接続を維持します | すべての構成をクリアしてリセットして、初期状態に戻る |
接続を維持するかどうか | 同じサーバーへの頻繁なリクエストに適した接続を維持します | 各リクエスト間の完全なリセットに適した接続は保持されません |
適用可能なシナリオ | 再接続を避けるために、同じサーバーに複数回リクエストします | 構成はリクエスト間で異なるか、各リクエストをリセットする必要があります |
パフォーマンスの影響 | パフォーマンスを改善し、接続を再確立する時間を短縮します | 各リクエストには再構成が必要であり、パフォーマンスに影響を与える可能性があります |
curl_upkeep()は、主に既存の接続情報を維持するために使用されるため、複数のリクエストが接続を再利用し、接続の確立の時間を短縮し、同じサーバーへの複数の要求の場合に使用するのに適しています。
curl_reset()は、各リクエストに異なる構成が必要なシナリオに適したCurlハンドルをリセットし、以前の構成をクリアするために使用されます。
2つの違いを理解し、ニーズに応じて適切な関数を選択すると、プログラムの効率とコードの明確さを効果的に改善できます。