ホームページ バックエンド開発 PHPチュートリアル 执行、获取远程代码返回:file_get_contents 超时处理的问题详解_PHP

执行、获取远程代码返回:file_get_contents 超时处理的问题详解_PHP

Jun 01, 2016 pm 12:05 PM
file_get_contents タイムアウト処理

天气终于晴了,但问题来了。在实现两个站点间用户数据同步,当使用php函数 file_get_contents抓取执行远程页面时,如果连接超时将会输出一个Fatal Error或相当的慢,结果导致下面的代码不能运行。先了解一下PHP file_get_contents() 函数
定义和用法
file_get_contents() 函数把整个文件读入一个字符串中。
和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
语法
file_get_contents(path,include_path,context,start,max_length)参数 描述
path 必需。规定要读取的文件。
include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context 可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。
start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。
说明
对 context 的支持是 PHP 5.0.0 添加的。
针对超时或页面过慢,一般可采取两个解决方案:

一. 利用file_get_contents()第三个参数
复制代码 代码如下:
$url = "http://zhoz.com/zhoz.php";     
$ctx = stream_context_create(array(     
‘http' => array(‘timeout' => 10)     
    )     
    );     
$result = @file_get_contents($url, 0, $ctx);     
if($result){     
        var_dump($result);     
    }else{     
echo " Buffer is empty";     
    }     
?>  

此方法1,我经测试在本地反映良好,但如果在外网测试(环境:中国→美国服务器间)基本都是超时的情况。
测试了TimeOut基本没有用了,建议以下方式

二. 使用curl扩展库
复制代码 代码如下:
$url = "http://zhoz.com/zhoz.php";     
try {     
echo date(‘Y-m-d h:i:s');     
echo "";     
//$buffer = file_get_contents($url);   
$buffer = zhoz_get_contents($url);     
echo date(‘Y-m-d h:i:s');     
if(emptyempty($buffer)) {     
echo " Buffer is empty";     
        } else {     
echo " Buffer is not empty";     
        }     
    } catch(Exception $e) {     
echo "error ";     
    }     
function zhoz_get_contents($url, $second = 5) {     
$ch = curl_init();     
        curl_setopt($ch,CURLOPT_URL,$url);     
        curl_setopt($ch,CURLOPT_HEADER,0);     
        curl_setopt($ch,CURLOPT_TIMEOUT,$second);     
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);     
$content = curl_exec($ch);     
        curl_close($ch);     
return $content;     
    }     
?>

综述,根据系统环境来选择到底应用哪种方法:
复制代码 代码如下:
function vita_get_url_content($url) {  
if(function_exists(‘file_get_contents')) {  
$file_contents = file_get_contents($url);  
} else {  
$ch = curl_init();  
$timeout = 5;  
curl_setopt ($ch, CURLOPT_URL, $url);  
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
$file_contents = curl_exec($ch);  
curl_close($ch);  
}  
return $file_contents;  
}  
?> 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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() 関数の使用法を紹介し、読者がより良く理解できるようにいくつかのコード例を示します。

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 を使用してファイルを開きます

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 ページの読み込みタイムアウトを設定します。自動テストでは、次のことを行う必要があります。

See all articles