PHPでは、 curl_upkeep()関数は通常、永続的なHTTP接続を維持するために使用され、タイムアウトによって接続が切断されないようにします。通常、ネットワーク要求が頻繁に発生し、長期的な接続が必要なシナリオで使用されます。 curl_upkeep()関数の効果を確保するために、いくつかのデバッグ平均と実際の応答データを使用して機能するかどうかを確認できます。この記事では、curl_upkeep()関数が実際に機能するかどうかを判断する方法を詳細に紹介します。
curl_upkeep()は、HTTPセッションをアクティブに保つための手法であり、長期にわたるリクエストまたは長期的な接続シナリオを処理するためによく使用されます。 PHPのCurlライブラリは、 curlopt_timeoutやcurlopt_connecttimeoutなどの適切なオプションを設定することにより、接続タイムアウトを制御できますが、接続が何らかの方法で閉じられないように積極的に維持する必要がある場合があり、 curl_upkeep()が特に重要です。
$ch = curl_init();
// リクエストされたセット URL
curl_setopt($ch, CURLOPT_URL, "https://m66.net/api/keepalive");
// 返す必要があるコンテンツを設定します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// タイムアウトを設定します(例えば 302番)
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
// 作る cURL リクエストを送信した後、接続を維持します
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// 連続接続ホールドを有効にします
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Connection: keep-alive'
));
// 埋め込む cURL 聞く
$response = curl_exec($ch);
// 检查是否成功埋め込む
if(curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
} else {
echo "Response received: " . $response;
}
curl_close($ch);
curl_setopt($ ch、curlopt_url、 "https://m66.net/api/keepalive"):urlがM66.netドメイン名を使用する場合、要求されたURLを設定します。
curl_setopt($ ch、curlopt_returntransfer、true) :直接出力ではなく、応答コンテンツを返すようにtrueに設定します。
curl_setopt($ ch、curlopt_timeout、30) :要求されたタイムアウトを30秒に設定します。
curl_setopt($ ch、curlopt_followlocation、true) :Curlがリダイレクトに従うことを可能にします。
curl_setopt($ ch、curlopt_httpheader、array( 'connection:keep-alive')) :HTTPリクエストヘッダーを設定して、HTTP接続が閉じないようにしたいことを示します。
返されたHTTP応答ヘッダーをチェックすることにより、連続接続が有効になっているかどうかを判断します。有効なcurl_upkeep()関数は、次のヘッダーを含む応答を返す必要があります。
$header = curl_getinfo($ch, CURLINFO_HEADER_OUT);
echo "Request Header: " . $header;
リクエストに接続が含まれている場合:キープアライブ、それは接続がアクティブのままである可能性があることを意味します。
curl_exec()関数は応答コンテンツを返します。接続またはタイムアウトに問題がある場合は、接続に問題が発生した場合にエラーがあるかどうかを確認できます。
if(curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
} else {
echo "Request was successful.";
}
エラーメッセージを確認して、接続の問題があるかタイムアウトがあるかを確認します。エラーがなく、応答が時間内に戻る場合、 curl_upkeep()の効果が正常であることを意味します。
永続的な接続が有効になっている場合、 curlopt_verboseを設定してデバッグ情報を表示できます。リクエストの応答時間と接続時間を観察することにより、接続がより長い期間維持されているかどうかを確認してください。
curl_setopt($ch, CURLOPT_VERBOSE, true);
デバッグ情報が有効になっている場合、CURLは、接続が確立されて閉じられる時間を含む詳細なデバッグ情報を出力します。接続が持続している場合、「TCP接続が確立されている」や「接続キープアリブ」などのメッセージが表示されます。
サーバーがロギングをサポートする場合、サーバー側のログファイルを確認して、継続的な要求レコードがあるかどうかを確認できます。サーバーの接続要求が切断されていない場合、 curl_upkeep()の効果が有効になっていることを意味します。
リクエストを定期的に開始して、接続の持続性を検出できます。たとえば、たまにAPIをリクエストし、応答または接続の閉鎖の遅延を確認します。