最新のWebアプリケーションでは、サーバーとの頻繁なHTTP要求と応答の相互作用が非常に一般的な要件です。接続を確立し、リクエストを送信し、接続を閉じるたびに、特に高い同時リクエストに直面している場合は、多くのリソースと時間を消費します。これは、サーバーに大きな圧力をかける可能性があります。パフォーマンスを最適化し、サーバーの負荷を削減するために、PHPのCurl関数がこれを達成するのに役立つ場合、接続を維持すると呼ばれるメソッドを使用できます。
この記事では、 curl_upkeep()関数を介してHTTP接続をアクティブに保つ方法に焦点を当て、それにより、接続の頻繁な再構築によって引き起こされるパフォーマンスの問題を削減します。
HTTP要求がCurlを介してサーバーに開始されるたびに、接続の確立、データの送信、データの受信、および接続の閉鎖プロセスを実行します。要求ごとに、消費システムリソースを確立および切断します。特に、同時性が高い場合、頻繁な確立と接続の閉鎖は、サーバーの過負荷につながる可能性があります。
キープアライブ機能を使用することにより、リクエストするたびに接続の再確立を避けることができます。 HTTP Keep-Aliveを使用すると、リクエストを送信した後に接続を開いたままにし、複数のリクエストが接続を共有し、確立および破壊されたTCP接続の数を減らし、サーバーの圧力を削減し、パフォーマンスの改善を可能にします。
PHPでは、 CurlはHTTPリクエストを送信し、サーバーの応答を処理するための非常に強力なツールです。接続をアクティブに保つために、 Curl構成にいくつかのオプションを設定できます。
すでに基本的なカール要求があるとし、接続をアクティブに保つことができるように変更したいとします。
<?php
function curl_upkeep($url) {
// 初期化 cURL セッション
$ch = curl_init();
// ターゲットの設定 URL
curl_setopt($ch, CURLOPT_URL, $url);
// リクエストメソッドをに設定します GET
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
// 出力の代わりに返品値を有効にします
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// ヘッダー情報を設定します,接続をサポートします
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Connection: keep-alive"
]);
// 再試行時間の最大数と再試行間隔を設定します
curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// リクエストを実行して、応答を取得します
$response = curl_exec($ch);
// エラーが発生したかどうかを確認してください
if(curl_errno($ch)) {
echo "cURL error: " . curl_error($ch);
}
// 閉鎖 cURL セッション
curl_close($ch);
// 返信応答
return $response;
}
// 使用 m66.net 例として URL
$response = curl_upkeep("https://m66.net/api/getData");
echo $response;
?>
つながりを維持:
curlopt_httpheaderオプションをcurl_setopt()に設定して、接続を追加します。このヘッダーは、クライアントが応答を送信した後に現在の接続をアクティブに保ち、後続のリクエストを受け入れることができることをサーバーに伝えます。
最大リダイレクト:
curlopt_maxredirsオプションは、許可されているリダイレクトの最大数を制御します。場合によっては、サーバーがリダイレクト応答(301や302など)を返す場合があり、このオプションを介してリダイレクトの数を制限して、無限のループを防ぐことができます。
リダイレクトに従ってください:
curlopt_followlocationは、Curlが3xxクラスのリダイレクト応答に従うことを許可するようにTrueに設定されています。これは、リクエストがターゲットサーバーの最終位置に到達できるようにするために非常に重要です。
エラー処理:
curl_errno()とcurl_error()を使用して、可能なエラーをキャプチャして出力して、エラーが時間内に診断できることを確認します。
応答が返されます:
curl_exec()は、サーバーの応答データを返します。これは、後続の処理のために保存して返されます。
CurlでKeep Connectionオプションを使用することにより、頻繁な接続の作成と閉鎖からサーバーの圧力を大幅に削減できます。特に、多数のリクエストを処理する場合、接続をアクティブに保つことで、アプリケーションのパフォーマンスを効果的に改善し、遅延を削減し、ユーザーエクスペリエンスを最適化できます。接続を設定することにより、リクエストの信頼性と柔軟性を向上させます。つながりを保ち、接続を永続させ、他のCurlオプションを設定します。
うまくいけば、この記事を通して、 curl_upkeep()を使用して接続をアクティブに保ち、接続の頻繁な再構築によりサーバーの圧力を軽減する方法をよりよく理解できることを願っています。