最新のWeb開発では、HTTP/2プロトコルは、その効率的な多重化特性により、徐々に主流になりました。ただし、HTTP/2の利点を最大限に活用するためには、接続管理とメンテナンスが特に重要です。 HTTP/2接続ライフサイクルを拡張するために使用されるツールとして、 curl_upkeep()関数は、頻繁な接続の確立と破壊を効果的に削減し、要求効率をさらに改善できます。この記事では、curl_upkeep()関数を使用してHTTP/2接続を最適化する方法について詳しく説明します。
HTTP/2は、HTTPプロトコルの2番目のメジャーバージョンです。 HTTP/1.1と比較して、主に以下を含む多くの最適化があります。
多重化:HTTP/2は、単一の接続で複数のリクエストと応答を並行して送信でき、HTTP/1.1での頭のブロックを回避できます。
ヘッダー圧縮:HTTP/2は、HPACK圧縮テクノロジーを使用して要求と応答のヘッダーを圧縮し、ネットワーク伝送の負担を軽減します。
サーバープッシュ:クライアントがリクエストする前に、サーバーがクライアントにリソースを積極的に送信できるようにします。
これらの機能により、HTTP/2はページの読み込み速度を大幅に改善し、遅延を減らすことができます。
curl_upkeep()は、PHP拡張ライブラリの関数です。 HTTP/2接続をアクティブに保つことにより、頻繁な接続の確立と閉鎖によって引き起こされるパフォーマンスオーバーヘッドを削減します。接続のライフサイクルを延長することにより、 Curl_upkeep()は、特に多数のリクエストが必要な場合に、リクエストの効率を効果的に改善できます。
HTTP/2プロトコルでは、各接続には追加の時間と計算リソースが必要なため、永続的な接続を維持することが重要です。 curl_upkeep()は、接続が生き残ることを可能にし、接続の頻繁な再確立を避け、それにより遅延とリソースの消費を削減します。
PHPでcurl_upkeep()関数を使用してHTTP/2要求を最適化するには、PHP環境がHTTP/2およびCURL拡張機能をサポートすることを確認する必要があります。次に、コードを介してこの関数を実装する方法について説明します。
カール拡張機能をインストールして構成します
PHPインストールでCurl拡張機能が有効になっていることを確認してください。有効になっていない場合は、次のコマンドでインストールできます。
sudo apt-get install php-curl
PHP構成ファイルでcurl拡張機能を有効にしますphp.ini :
extension=curl.so
curl_upkeep()を使用してPHPスクリプトを作成する
以下は、curl_upkeep()関数を使用してHTTP/2接続のライフサイクルを拡張する方法を示す単純なPHPの例です。
<?php
// 初期化 cURL セッション
$ch = curl_init();
// 設定 URL,必ず使用してください HTTPS プロトコル
curl_setopt($ch, CURLOPT_URL, "https://m66.net/api/data");
// 有効にする HTTP/2
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
// 設定超时时间,長期的なリクエストを避けてください
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
// 有効にする持久连接,頻繁な接続確立の時間オーバーヘッドを短縮します
curl_setopt($ch, CURLOPT_FORBID_REUSE, false); // 接続の多重化を許可します
// 開ける keep-alive 接続ライフサイクルを拡張するメカニズム
curl_setopt($ch, CURLOPT_TCP_KEEPALIVE, true);
curl_setopt($ch, CURLOPT_TCP_KEEPIDLE, 60); // アイドル状態を保ちます 60 2番
curl_setopt($ch, CURLOPT_TCP_KEEPINTVL, 30); // 毎 30 2番发送一次保持活动包
// リクエストを送信します
$response = curl_exec($ch);
// エラーを確認してください
if(curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
} else {
echo "Response: " . $response;
}
// 閉鎖 cURL セッション
curl_close($ch);
?>
curl_http_version_2_0 :HTTP/2プロトコルを有効にします。
curl_forbid_reuse :接続の多重化を使用して、リクエストするたびに新しい接続を作成しないようにします。
curl_tcp_keepalive :接続をアクティブに保つために、キープアリブ機能を有効にします。
curl_tcp_keepidle :接続がアイドル状態になるタイムアウト時間(ユニット:秒)を設定します。つまり、この時間内にデータが送信されない場合、接続は維持されます。
curl_tcp_keepintvl :キープアライブパケットを送信するまでの時間を設定します。
HTTP/2接続の保持ポリシーを合理的に配置することにより、 CURL_UPKEEP()関数は、特に同じホストに頻繁にアクセスできる場合にリクエスト効率を改善するのに役立ちます。このようにして、ネットワークの遅延を減らすだけでなく、サーバーのコンピューティングリソースを保存し、ユーザーエクスペリエンスを向上させることもできます。
HTTP/2プロトコルを使用する場合、 CURL_UPKEEP()関数を介して接続ライフサイクルを拡張すると、接続の確立と閉鎖の頻度を効果的に減らし、それによりリクエスト効率が向上します。 PHPのCurl拡張機能は、柔軟な構成オプションを提供し、開発者が接続管理ポリシーを微調整し、HTTP/2のパフォーマンスの利点を活用できるようにします。
この記事の紹介が、 curl_upkeep()関数をよりよく理解して使用して、PHPアプリケーションのHTTP/2パフォーマンスを改善することを願っています。