ホームページ  >  記事  >  バックエンド開発  >  PHPでcurlがタイムアウトしないように設定するにはどうすればよいですか?いくつかの方法の簡単な分析

PHPでcurlがタイムアウトしないように設定するにはどうすればよいですか?いくつかの方法の簡単な分析

PHPz
PHPzオリジナル
2023-03-27 19:03:362305ブラウズ

PHP では、curl は HTTP リクエストを送信するための強力なライブラリです。ただし、デフォルトでは、curl リクエストにはタイムアウトが設定され、その後リクエストはキャンセルされます。この時間のデフォルトは 1 秒です。ただし、場合によっては、デフォルトのタイムアウト内でキャンセルするのではなく、curl リクエストを長時間続行する必要がある場合があります。 PHPコードを通じてcurlリクエストのタイムアウトを設定するにはどうすればよいですか?

  1. php.ini ファイルを変更する

php.ini ファイルにアクセスする権限がある場合は、変更できます。このファイルにあるcurlのタイムアウトを変更します。 php.ini ファイルで、次の 2 つのオプションを見つけます。

; Maximum amount of time (in seconds) that is allowed for cURL functions to execute.
; Note: This value should not be set to an excessive amount, as it will negatively
; affect server performance. 
; Default Value: 30
curl_timeout = 30

; The number of seconds to wait while trying to connect.
; Default Value: 60
curl_connect_timeout = 60

このうち、curl_timeout は、curl リクエストの最大実行時間、curl_connect_timeout は、接続タイムアウトです。カールリクエスト時間。値を秒単位で希望の時間に変更する必要があります。変更が完了したら、Apache または PHP-FPM サービスを再起動して変更を有効にします。

  1. curl_setopt 関数を使用する

php.ini ファイルを変更する権限がない場合は、curl_setopt 関数を使用して次の設定を行うことができます。 PHPコードのcurlタイムアウト。この関数はcurlのオプションを設定するために使用され、その使用法は次のとおりです。

bool curl_setopt ( resource $ch , int $option , mixed $value )

このうち、$chはcurlのハンドル(通常はcurl_init関数を使用して初期化されます)であり、 $option は設定する必要があるオプション、$value はオプションの値です。タイムアウトには 2 つのオプションを設定できます:

CURLOPT_TIMEOUT:curl 请求最大执行时间(以秒为单位);
CURLOPT_CONNECTTIMEOUT:curl 请求连接超时时间(以秒为单位)。

次のコードを使用して上記のオプションを設定できます:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // 设置 curl 请求最大执行时间为 120 秒(2 分钟)
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); // 设置 curl 请求连接超时时间为 30 秒
$result = curl_exec($ch);
curl_close($ch);

上記のコードでは、curl リクエストの最大実行時間を設定します。時間は 120 秒、接続タイムアウトは 30 秒です。 CURL リクエストが 120 秒以内に完了しない場合、または接続が 30 秒以内に正常に確立されない場合、リクエストはキャンセルされます。

  1. URL にパラメータを追加します

PHP 構成を変更したくない場合、または、curl_setopt 関数を使用したくない場合は、次のパラメータを追加することもできます。 URL にパラメータを設定して、curl リクエストのタイムアウトを設定します。具体的な操作は次のとおりです。

http://example.com/?curl_timeout=120&curl_connect_timeout=30

上記の URL では、curl_timeout および curl_connect_timeout パラメータをリクエスト パラメータに追加して、curl のタイムアウト期間を設定しました。リクエスト。 curl は、リクエストを行うときにこれらのパラメータを自動的に読み取り、その値を適用します。この方法は比較的単純ですが、URL に含まれるパラメータがブラウザまたはリバース プロキシ サーバーによって傍受または変更される可能性があるという欠点があります。

概要

php.ini ファイルを変更するか、curl_setopt 関数を使用するか、URL にパラメータを追加することで、PHP での CURL リクエストのタイムアウトを設定できます。 curl を使用する場合は、特定の状況に応じて適切なタイムアウトを設定する必要があります。サーバーのパフォーマンスに影響を与えないように、タイムアウトを長すぎないように設定してください。

以上がPHPでcurlがタイムアウトしないように設定するにはどうすればよいですか?いくつかの方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。