ホームページ バックエンド開発 PHPチュートリアル PHP file_get_contents设置超时处理方法_PHP

PHP file_get_contents设置超时处理方法_PHP

Jun 01, 2016 am 11:59 AM
file_get_contents タイムアウト処理

file_get_contents的超时处理

话说,从PHP5开始,file_get_content已经支持context了(手册上写着:5.0.0 Added the context support. ),也就是说,从5.0开始,file_get_contents其实也可以POST数据。

今天说的这篇是讲超时的,确实在跨服务器提交的时候,不可避免的会遇到超时的情况,这个时候怎么办?set_time_limit是没有用的,只有用context中的timeout时间来控制。相反,我们不是要抑止,而是要管理。比如在超时返回错误后,进行一次尝试,就象js中的 settimeout那样,对函数重新处理。错误超过3次或者5次后,我们就确实的认为无法连接服务器而彻底放弃。这,是一个好办法,应该值得推荐使用。其实。不全是file_get_contents,只要支持context的都应该加上,避免超时浪费时间。这样可以被支持的函数大致有:fsocketopen(该函数的最后一个参数。好象比较推荐在读stream的时候,使用stream_time_out函数进行控制),fopen(也是从PHP5开始加入context支持),file(PHP5加入支持),curl(curl有自已的变量 CURLOPT_TIMEOUT)等 。

在使用file_get_contents函数的时候,经常会出现超时的情况,在这里要通过查看一下错误提示,看看是哪种错误,比较常见的是读取超 时,这种情况大家可以通过一些方法来尽量的避免或者解决。这里就简单介绍两种:

一、增加超时的时间限制

这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时 间。

我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改 file_get_contents延时可以用resource $context的timeout参数:

复制代码 代码如下:
$opts = array(  
  'http'=>array(  
    'method'=>"GET",  
    'timeout'=>1,//单位秒 
   )  
);   

 $cnt=0;  
while($cntecho $cnt;  
echo $bb; 

二、一次有延时的话那就多试几次

有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失 败将返回 FALSE,所以可以下面这样编写代码:

复制代码 代码如下:
$cnt=0;  
 while($cnt

以上方法对付超时已经OK了。那么Post呢?细心点有人发现了'method'=>”GET”, 对!是不是能设置成post呢?百度找了下相关资料,还真可以!而且有人写出了山寨版的post传值函数,如下:

复制代码 代码如下:
function Post($url, $post = null){  
    $context = array ();  
    if (is_array ( $post )) {  
        ksort ( $post );  
        $context ['http'] = array (  
            'timeout' => 60,   
            'method' => 'POST',   
            'content' => http_build_query( $post, '', '&' )  
         );  

    }  
    return file_get_contents ( $url, false, stream_context_create ( $context ) );  
}  

 $data = array (  
    'name' => 'test',  
    'email' => 'admin@admin.com',  
    'submit' => 'submit',  
);  
echo Post ( 'http://www.bitsCN.com', $data ); 

OK , 上面函数完美了,既解决了超时控制又解决了Post传值。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP 警告の解決方法: file_get_contents(): ファイル名を空にすることはできません PHP 警告の解決方法: file_get_contents(): ファイル名を空にすることはできません Aug 18, 2023 pm 07:30 PM

PHPWarning: file_get_contents(): Filenamecannotbeempty を解決する方法 PHP 開発の過程で、次のエラー メッセージが頻繁に発生します: PHPWarning: file_get_contents(): Filenamecannotbeempty。このエラーは通常、file_get_contents 関数を使用するときに発生します。

PHP 警告: file_get_contents(): ストリームを開けませんでした: HTTP リクエストが失敗しました PHP 警告: file_get_contents(): ストリームを開けませんでした: HTTP リクエストが失敗しました Aug 18, 2023 pm 11:34 PM

PHPWarning:file_get_contents():failedtoopenstream:HTTPrequestfailed を解決する方法 PHP 開発中、file_get_contents 関数を通じてリモート サーバーに対して HTTP リクエストが開始される状況によく遭遇します。ただし、場合によっては、次のような一般的なエラー メッセージが表示されることがあります。 PHPWarning: file_get_c

PHP の file_get_contents() 関数: ファイルからコンテンツを読み取る方法 PHP の file_get_contents() 関数: ファイルからコンテンツを読み取る方法 Nov 04, 2023 pm 01:43 PM

PHP の file_get_contents() 関数: ファイルからコンテンツを読み取る方法、具体的なコード例 PHP では、file_get_contents() はファイルからコンテンツを読み取ることができる非常に便利な関数です。テキスト ファイルを読み取る場合でも、リモート URL からコンテンツを読み取る場合でも、この機能を使用するとタスクを簡単に完了できます。構文 この関数の基本構文は次のとおりです。 stringfile_get_contents(string$f

PHPファイルキャッシュ関数の詳細説明:file_get_contents、file_put_contents、unlinkなどのファイルキャッシュ処理メソッド PHPファイルキャッシュ関数の詳細説明:file_get_contents、file_put_contents、unlinkなどのファイルキャッシュ処理メソッド Nov 18, 2023 am 09:37 AM

PHP ファイル キャッシュ関数の詳細な説明: file_get_contents、file_put_contents、unlink などの関数のファイル キャッシュ処理方法 (具体的なコード例が必要) Web 開発では、ファイルからデータを読み取ったり、ファイルにデータを書き込んだりすることがよくあります。さらに、場合によっては、頻繁なファイルの読み取りおよび書き込み操作を回避してパフォーマンスを向上させるために、ファイルの内容をキャッシュする必要があります。 PHP には、ファイル キャッシュの実装に役立つ一般的に使用される関数がいくつかあります。

PHP 関数の紹介 - file_get_contents(): URL の内容を文字列に読み取ります。 PHP 関数の紹介 - file_get_contents(): URL の内容を文字列に読み取ります。 Jul 24, 2023 pm 02:32 PM

PHP 関数の紹介 - file_get_contents(): URL の内容を文字列に読み込みます Web 開発では、リモート サーバーからデータを取得したり、リモート ファイルを読み込んだりする必要がよくあります。 PHP には、URL の内容を簡単に読み取って文字列に保存できる非常に強力な関数 file_get_contents() が用意されています。この記事では、file_get_contents() 関数の使用法を紹介し、読者がより良く理解できるようにいくつかのコード例を示します。

PHP および WebDriver 拡張機能: Web ページの読み込みタイムアウトと失敗を処理する方法 PHP および WebDriver 拡張機能: Web ページの読み込みタイムアウトと失敗を処理する方法 Jul 08, 2023 pm 12:21 PM

PHP および WebDriver 拡張機能: Web ページの読み込みタイムアウトと失敗を処理する方法 はじめに: ネットワークの問題は、Web 自動テスト ツールを使用する際の一般的な課題の 1 つです。自動テストのために PHP 言語を WebDriver 拡張機能と組み合わせて使用​​すると、Web ページの読み込みタイムアウトやエラーが発生することがよくあります。この記事では、PHP と WebDriver 拡張機能を使用してこれらの問題に対処する方法を説明し、いくつかのコード例を示します。 1. Web ページの読み込みタイムアウトを設定します。自動テストでは、次のことを行う必要があります。

Golang でのエラー処理: タイムアウト エラーを処理するには? Golang でのエラー処理: タイムアウト エラーを処理するには? Aug 07, 2023 pm 01:17 PM

Golang でのエラー処理: タイムアウト エラーを処理するには?はじめに: ネットワーク リクエストを使用したり、時間のかかる操作を実行したりするプログラムを作成する場合、タイムアウトが発生することがよくあります。これらのタイムアウト エラーは、ネットワーク接続の問題、大量のデータの処理、または外部サービスの障害によって発生する可能性があります。 Golang では、いくつかのテクニックを使用してタイムアウト エラーを処理し、プログラムの堅牢性と信頼性を確保できます。この記事では、いくつかの一般的なタイムアウト エラー処理方法を紹介し、対応するコード例を示します。 1.タイムパッケージGoを使用する

PHPのfile_get_contents関数を使用してファイルの内容を読み取る方法 PHPのfile_get_contents関数を使用してファイルの内容を読み取る方法 Jun 26, 2023 pm 12:01 PM

PHP では、ファイルからデータを読み取る必要があることがよくあります。この場合、file_get_contents 関数を使用できます。この関数は、ファイルからすべてを単純に読み取り、それを文字列として返すことができます。これは、構成ファイルの読み取り、ログ ファイルの読み取りなど、多くのシナリオで非常に役立ちます。この記事では、PHPのfile_get_contents関数を使用してファイルの内容を読み取る方法を説明します。ステップ 1: file を使用してファイルを開きます

See all articles