Curlを使用する場合、通常、次の手順を実行します。
Curlセッションの初期化: curl_init() ;
要求されたオプションを設定: curl_setopt() ;
curl request: curl_exec() ;
対応データを取得して処理します: curl_exec()を使用して要求された応答を取得します。
Curlセッションを閉じます: curl_close() 。
ここで、 curl_close()は、Curlセッションに関連するリソースを解放するCurlセッションを閉じる関数です。通常、 curl_close()を呼び出した後、セッションが閉じられているため、Curl要求の応答データにアクセスできなくなります。
答えはノーです。
curl_exec()は、要求された応答データを返します。 curl_exec()を呼び出してリクエストを実行すると、返された応答データを変数に保存できます。 Curl_close()を呼び出した後に応答データにアクセスしようとすると、セッションが閉じられているため、誤ったまたは予測不可能な動作が発生します。したがって、正しい方法は、curl_close()を呼び出す前に、応答データを保存および処理したことを確認することです。
<?php
$ch = curl_init();
// 設定リクエスト URL その他のオプション
curl_setopt($ch, CURLOPT_URL, "https://gitbox.net/api/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// リクエストを実行して、応答データを取得します
$response = curl_exec($ch);
// 閉鎖 cURL セッション
curl_close($ch);
// 在閉鎖后尝试访问 $response データは大丈夫です,すでに変数に保存されているからです
echo $response;
?>
上記の例では、最初にCurl要求を実行し、応答データを$ Response変数に保存します。次に、 Curl_Close()を呼び出してCurlセッションを閉じます。この場合、保存されているため、 $ Response変数のデータにアクセスできます。
応答データを使用してから、常にcurl_close()を呼び出します
応答データのすべての操作を完了したら、 curl_close()を呼び出して、必要な処理を見逃さないようにします。すべての応答データの解析およびその他の操作が完了していることを確認してください。
curl_exec()を使用して応答データを取得する場合は注意してください
リクエストを実行するだけで、応答データを気にしない場合は、 curlopt_returntransferオプションを省略するか、 falseに設定できます。このようにして、応答データは返されませんが、ブラウザに直接出力されます。
事前に応答データを保存します
複数の場所で応答データを使用する必要がある場合は、 curl_exec()を呼び出した後、応答データを変数に保存して、後続の処理でデータを使用できることを確認できます。
curl_close()を呼び出した後、応答データにアクセスしようとしないでください
curl_close()が呼び出されると、セッションが終了し、セッションに関連するすべてのリソースがリリースされます。この後に応答データにアクセスしようとすると、エラーが発生する場合があります。
curl_close()関数は、Curlセッションを閉じて関連するリソースをリリースするために使用されます。 Curl_close()を呼び出した後、セッションが終了したため、セッションの応答データにアクセスできなくなります。したがって、 curl_close()を呼び出す前に、応答データを処理して保存していることを確認してください。それを使用する正しい方法は、応答データを取得し、セッションを閉じて、セッションが閉じた後に無効なデータにアクセスしないようにすることです。