Curlは、HTTPリクエストをサーバーに送信するためのツールのライブラリです。 PHPでは、 curl_init()がcurlセッションを初期化し、 curl_setopt()を関連するオプションを設定し、 curl_exec()はリクエストを実行し、 curl_close()はセッションを閉じるために使用されます。
$ch = curl_init('https://gitbox.net'); // 初期化 cURL セッション
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返品データを設定します
$response = curl_exec($ch); // 埋め込む cURL 聞く
curl_close($ch); // 关闭セッション
curl_close()の目的は、curl_init()によって作成されたリソースをリリースすることです。一般に、すべてのCurl操作がスムーズに進むと、 Curl_Close()は例外や警告を投げません。
curl_close()を使用する場合、いくつかの一般的なエラーまたは警告が発生する可能性があります。これらの問題とそれらを解決する方法を見てみましょう。
場合によっては、 Curl_Close()が呼び出されたときにCurlセッションが初期化されていない場合、警告が表示されます。この問題は通常、 curl_init()で初期化されていないCurlセッションを閉じようとすると発生します。
エラー例:
curl_close($ch); // 未初期化的 cURL セッション
解決:
curl_close()を呼び出す前に、Curlセッションが正しく初期化されていることを確認してください。 $ ch変数がfalseであるかどうかを確認することで、このエラーを回避できます。
if ($ch !== false) {
curl_close($ch);
}
Curl_Close()が呼び出されると、PHPはセッションが閉じられている場合に警告を投げることができます。これは通常、 curl_close()が複数回呼び出されたとき、またはCurlセッションが手動で閉じられている場合に発生します。再び閉じてみてください。
エラー例:
curl_close($ch); // 第一次关闭セッション
curl_close($ch); // 再次关闭已经关闭的セッション
解決:
curl_close()を1回だけ呼び出すか、条件付き判断を使用して繰り返しの閉鎖を避けてください。
if (is_resource($ch)) {
curl_close($ch);
}
Curlセッションは有効なリソースタイプである必要があり、 $ ch変数がCurlリソースではない場合、 curl_close()を呼び出すときにエラーも発生します。
エラー例:
$ch = null; // 間違っている cURL セッション资源
curl_close($ch); // 間違っている资源类型
解決:
$ chが有効なリソースタイプであることを確認してください。 is_resource()関数を介して確認できます。
if (is_resource($ch)) {
curl_close($ch);
}
curl_close()自体はシンプルですが、Curlセッションはエラーに遭遇する可能性があります。セッションを閉じる前に、セッションが正常に実行されたかどうかを確認する必要があります。リクエストでエラーが発生した場合、 curl_error()またはcurl_errno()を介して詳細を取得できます。
カールエラーを確認する例:
$ch = curl_init('https://gitbox.net');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if ($response === false) {
echo 'cURL 間違い: ' . curl_error($ch);
} else {
echo '応答コンテンツ: ' . $response;
}
curl_close($ch);
curl_error()を介してcurlエラー情報を取得して、問題が発生したときに問題を迅速に配置できるようにします。
PHP 7以降では、トライキャッチを使用して例外をキャッチし、エラーを処理できます。 curl_close()自体は例外をスローしませんが、Curlリクエストをトライキャッチでカプセル化することができるため、潜在的な例外をキャッチできます。
例外処理例:
try {
$ch = curl_init('https://gitbox.net');
if ($ch === false) {
throw new Exception('无法初期化 cURL セッション');
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if ($response === false) {
throw new Exception('cURL 聞く失败: ' . curl_error($ch));
}
echo $response;
} catch (Exception $e) {
echo '間違い信息: ' . $e->getMessage();
} finally {
if (isset($ch) && is_resource($ch)) {
curl_close($ch);
}
}
Try-Catchを使用すると、エラーが発生した場合でも、プログラムがセッションリソースを優雅に処理および閉じることができます。
curl_close()関数は、PHPで非常に重要な関数であり、Curlセッションと無料リソースを閉じるために使用されます。通常、エラーはスローされませんが、発生する可能性のある警告や例外に対処する必要があります。 Curlリソースの有効性を確認し、セッションが正しく初期化されていることを確認し、条件付きステートメントと例外処理を使用して、ほとんどのcurl_close()関連の問題を回避できます。