PHPでは、 Curlは非常に強力なツールであり、さまざまなネットワークリクエストを作成するために使用できます。 curl_init()は、curlセッションの初期化に使用される関数であり、 curl_share_init()は共有セッションの初期化に使用されます。これら2つの機能を通じて、さまざまなセッション共有とデータ交換を実装して、効率を向上させることができます。
この記事では、これら2つの機能を使用して共有セッションを構築するのに役立つ方法を詳細に分析します。
共有セッションを使用すると、複数のカールセッションがCookie、DNS解像度キャッシュなどの特定の設定を共有できます。複数のリクエストを行う際に、ネットワーク接続、認証情報、ヘッダー情報などの複製設定を避け、パフォーマンスとリソースの使用を最適化します。
curl_init() :新しいCurlセッションを初期化し、Curlハンドルを返します。このハンドルを使用すると、HTTPリクエストを構成および実行できます。
curl_share_init() :共有セッションハンドルを初期化し、複数のCurlセッションが設定を共有できるようにします。 Cookie、DNS、SSLセッションなど、共有コンテンツを設定できます。
まず、 curl_share_init()を使用して共有セッションハンドルを作成する必要があります。
$share = curl_share_init();
共有セッションハンドルが作成された後、共有する必要があるオプションを設定できます。一般的な共有オプションは次のとおりです。
curlshopt_cookie :Cookieを共有します。
curlshopt_dns :共有DNSキャッシュ。
curlshopt_ssl :SSLセッションを共有します。
たとえば、共有Cookieを設定します。
curl_share_setopt($share, CURLSHOPT_COOKIE, true);
次に、 curl_init()を使用してCurlセッションハンドルを初期化します。ここでのセッションは、共有セッションに関連付けられており、設定を共有できます。
$ch = curl_init();
カールセッションに必要なオプションを設定します。たとえば、URLを設定して結果を返すなど。
curl_setopt($ch, CURLOPT_URL, "http://m66.net/api/endpoint");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SHARE, $share); // 共有会話
curl_exec()経由でhttp要求を実行し、結果を取得します。
$response = curl_exec($ch);
if ($response === false) {
echo "cURL Error: " . curl_error($ch);
}
リクエストが完了したら、Curlセッションと共有セッションを閉じる必要があります。
curl_close($ch);
curl_share_close($share);
<?php
// 初始化共有会話
$share = curl_share_init();
curl_share_setopt($share, CURLSHOPT_COOKIE, true);
// 最初のものを初期化します cURL セッション
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://m66.net/api/endpoint1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_SHARE, $share);
$response1 = curl_exec($ch1);
if ($response1 === false) {
echo "cURL Error: " . curl_error($ch1);
}
curl_close($ch1);
// 2番目を初期化します cURL セッション
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "http://m66.net/api/endpoint2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_SHARE, $share);
$response2 = curl_exec($ch2);
if ($response2 === false) {
echo "cURL Error: " . curl_error($ch2);
}
curl_close($ch2);
// 关闭共有会話
curl_share_close($share);
?>
curl_share_init()とcurl_share_setopt()の間に他の動作干渉がないことを確認してください。
共有セッションは、すべてのカールセッションが完了した後に閉鎖する必要があります。
複数のリクエストを実行するときにセッションを共有するための設定が必要な場合は、各リクエストが同じ共有ハンドルに渡されていることを確認してください。
curl_share_init()およびcurl_init()を使用することにより、複数のCurlセッションでデータと設定を共有し、パフォーマンスを最適化し、冗長リクエスト構成を削減できます。共有セッションは、特にCookieとDNSキャッシュを含むシナリオで、高周波リクエストを行う際に効率を大幅に向上させます。
この記事が、PHPでCurlを使用して共有セッションを構築し、コードのパフォーマンスを向上させる方法をよりよく理解するのに役立つことを願っています。