現在の位置: ホーム> 最新記事一覧> POSTリクエストを送信したときにCURL_CLOSE後に接続が適切に閉じられるようにするにはどうすればよいですか?

POSTリクエストを送信したときにCURL_CLOSE後に接続が適切に閉じられるようにするにはどうすればよいですか?

gitbox 2025-05-17

PHPでは、Curlは非常に強力なツールであり、リクエストを送信してURLを介して応答を受信できます。 Curlを介して、Get、Post、Put、DeleteなどのHTTPリクエストを簡単に送信できます。

 $ch = curl_init();  // 初期化 cURL セッション
curl_setopt($ch, CURLOPT_URL, "https://gitbox.net/your-api-endpoint");  // リクエストを設定します URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  // 戻り応答を文字列として設定します

// の場合 POST 聞く,設定 POST データ
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['key' => 'value']));

$response = curl_exec($ch);  // 执行聞く并获取応答

curl_close($ch);  // 閉鎖 cURL セッション

上記のコードでは、 curl_execを使用してリクエストを実行し、curlセッションを閉じるリクエストを実行した後にcurl_closeを呼び出します。

2。POSTリクエストが完全に送信されていることを確認してください

Curl_Closeを呼び出す前に、PHPはCurl_execを呼び出すとリクエスト応答を待ちます。したがって、 curl_execが正常に実行される限り、要求されたデータが送信されました。ただし、特に長いリクエストが実行された場合、接続を閉じる前にリクエストが完全に送信されることを確認することが重要です。

POSTリクエストデータが完全に送信され、接続が正常に閉じられるようにするために、 CURL_GETINFOを使用して、ステータスコードまたは応答のその他の応答情報を確認できます。

 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://gitbox.net/your-api-endpoint");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['key' => 'value']));

$response = curl_exec($ch);

// 获取聞く的详细信息
$info = curl_getinfo($ch);
if ($info['http_code'] == 200) {
    // 処理応答
    echo "POST 聞く已成功发送,応答:$response";
} else {
    echo "聞く失败,HTTP ステータスコード:" . $info['http_code'];
}

curl_close($ch);

curl_getinfoを介して取得したhttp_code情報は、リクエストが正常に送信されたかどうかを判断するのに役立ちます。 HTTPステータスコードが200の場合(リクエストが成功したことを示します)、POSTリクエストが完全に送信されたことを判断できます。

3.タイムアウトとエラーを処理します

POSTリクエストを送信するときに、接続タイムアウトやその他のネットワークの問題が発生する場合があります。この場合、 curl_setoptを使用してタイムアウトパラメーターを設定することが非常に重要です。

 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://gitbox.net/your-api-endpoint");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['key' => 'value']));
curl_setopt($ch, CURLOPT_TIMEOUT, 30);  // 設定超时为 30 2番

$response = curl_exec($ch);

// 取り扱いエラー
if (curl_errno($ch)) {
    echo "cURL 間違い: " . curl_error($ch);
} else {
    echo "応答: $response";
}

curl_close($ch);

curlopt_timeoutの設定により、リクエストが妥当な時間内に完了することを保証し、タイムアウトの場合、すぐにリクエストを停止します。

4.なぜ接続を閉じる必要があるのですか?

各Curlリクエストが終了した後、 Curl_Closeを呼び出すことが非常に重要です。カール関連のリソースを解放し、HTTP接続を閉じることができます。 curl_closeが呼び出されない場合、メモリリークまたはその他のリソース廃棄物につながる可能性があります。

 curl_close($ch);  // 必须閉鎖连接以释放资源

長期にわたるアプリケーションでは、接続を閉じることなく、特に多数のリクエストを送信する場合、システムリソースの過度の消費を引き起こす可能性があります。したがって、Curlを使用するたびに、 Curl_Closeを呼び出して接続を閉じるようにしてください。