ホームページ >バックエンド開発 >PHPチュートリアル >phpカール設定タイムアウトの例、phpcurl example_PHPチュートリアル

phpカール設定タイムアウトの例、phpcurl example_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:15:301757ブラウズ

phpcurl設定タイムアウトの例、phpcurlの例

この記事の例では、PHPでのcurlタイムアウト設定方法について説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです

HTTP にアクセスするには多くの方法があり、curl、socket、file_get_contents() などのメソッドを使用できます。
http にアクセスする場合は、タイムアウトの問題を考慮する必要があります。

CURL アクセス HTTP:

CURL は、HTTP プロトコル インターフェイスにアクセスするために一般的に使用されるライブラリであり、高いパフォーマンスを備え、いくつかの同時実行サポート機能を備えています。
curl_setopt($ch, opt) は、主に以下を含むいくつかのタイムアウト設定を設定できます:
① (重要) CURLOPT_TIMEOUT は、cURL の実行が許可される最大秒数を設定します。
② (重要) CURLOPT_TIMEOUT_MS は、cURL が実行できる最大時間をミリ秒単位で設定します。
(cURL 7.16.2 で追加。PHP 5.2.3 以降で利用可能)
③ CURLOPT_CONNECTTIMEOUT は、接続を開始するまでの待機時間です。0 に設定すると、無期限に待機します。
④ CURLOPT_CONNECTTIMEOUT_MS 接続試行の待機時間 (ミリ秒)。 0 に設定すると、無限に待機します。 (cURL 7.16.2 で追加。PHP 5.2.3 以降で利用可能)
⑤ CURLOPT_DNS_CACHE_TIMEOUT は、DNS 情報をメモリに保存する時間を設定します。デフォルトは 120 秒です。

1. カールの通常の 2 番目のタイムアウト:

コードをコピーします コードは次のとおりです:
$ch =curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT,60) //秒数を設定するだけです
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_USERAGENT, $define_vars['HTTP_USER_AGENT']);
2. カールの通常の第 2 レベルのタイムアウトの使用:


コードをコピーします

コードは次のとおりです:

curl_setopt($ch, CURLOPT_TIMEOUT,60); 3.curl でミリ秒のタイムアウトを設定する必要がある場合は、以下を追加する必要があります:
コードをコピーします

コードは次のとおりです:

curl_easy_setopt(curl, CURLOPT_NOSIGNAL,1L); //または curl_setopt ($ch, CURLOPT_NOSIGNAL,true);//ミリ秒レベルのタイムアウト設定をサポート この記事が皆様の PHP プログラミングのお役に立てれば幸いです。


いくつかの一般的な PHP タイムアウト処理方法

【Webサーバーのタイムアウト処理】

【Apache】
通常、パフォーマンスが高い場合、デフォルトのタイムアウト設定はすべて30秒ですが、ファイルのアップロードやネットワーク速度が非常に遅い場合は、タイムアウトが発生する場合があります。
現在、apachefastcgiphp-fpm モードには 3 つのタイムアウト設定があります:
fastcgi タイムアウト設定:
次のように変更された fastcgi 接続構成:

次のようにコードをコピーします:


FastCgiExternalServer/home/ forum/apache /apache_php/cgi-bin/php-cgi-socket/home/forum/php5/etc/php-fpm.sock
ScriptAlias/fcgi-bin/"/home/forum/apache/apache_php/cgi-bin/ "
AddHandlerphp -fastcgi.php
Actionphp-fastcgi/fcgi-bin/php-cgi
AddTypeapplication/x-


デフォルトの設定は 30 秒です。独自の設定をカスタマイズする必要がある場合は、 100 秒に変更するなど、構成を変更します: (変更後に apache を再起動します):

次のようにコードをコピーします:


FastCgiExternalServer/home/forum/apache/apache_php/cgi-bin/ php-cgi-socket/home/forum/php5 /etc/php-fpm.sock-idle-timeout100
ScriptAlias/fcgi-bin/"/home/forum/apache/apache_php/cgi-bin/"
AddHandlerphp-fastcgi。 php
Actionphp-fastcgi/fcgi-bin/php -cgi
AddTypeapplication/x-


タイムアウトになると、500 エラーが返され、バックエンド php サービスから切断され、 Apache エラー ログ:
[ThuJan2718:30:152011][error] [client10.81.41.110]FastCGI:commwithserver"/home/forum/apache/apache_php/cgi-bin/php-cgi"aborted:idletimeout(30sec)
[ThuJan2718:30:152011][error][client10.81.41.110]FastCGI:incompleteheaders(0bytes)receivedfromserver"/home/forum/apache/apache_php/cgi-bin/php-cgi"
その他の fastcgi...残り全文はこちら>>

curlタイムアウト出力

functioncurl_file_get_contents($url){
$starttime = time();

$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = trim(curl_exec($ch))

$endtime = time();

if($endtime-$starttime>=15){
echo 'php 実行タイムアウト';
}

return $contents;


http://www.bkjia.com/PHPjc/904928.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/904928.html技術記事 PHPのcurlのタイムアウト設定例、phpcurlの例 この記事では、PHPでのcurlのタイムアウト設定方法について説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです: HTTP へのアクセス方法はたくさんあります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。