ホームページ  >  記事  >  バックエンド開発  >  リモートコードを実行して取得 return: file_get_contents タイムアウト処理の詳細説明_PHPチュートリアル

リモートコードを実行して取得 return: file_get_contents タイムアウト処理の詳細説明_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:03:30850ブラウズ

ようやく天気は回復しましたが、問題が発生しました。 2 つのサイト間でユーザー データを同期するとき、PHP 関数 file_get_contents を使用してリモート ページをクロールおよび実行するときに、接続がタイムアウトすると、致命的エラーが出力されるか、非常に遅くなり、その結果、次のコードは同期できなくなります。走る。まず PHP の file_get_contents() 関数を理解します
定義と使用法
file_get_contents() 関数は、ファイル全体を文字列に読み取ります。
file_get_contents() がファイルを文字列に読み取る点を除いて、file() と同じです。
file_get_contents() 関数は、ファイルの内容を文字列に読み取るための推奨される方法です。オペレーティング システムでサポートされている場合は、パフォーマンスを向上させるためにメモリ マッピング テクノロジも使用されます。
構文
file_get_contents(path,include_path,context,start,max_length) パラメータ説明
path 必須。読み込むファイルを指定します。
include_path はオプションです。 include_path 内のファイルも検索したい場合は、このパラメータを「1」に設定できます。
コンテキスト オプション。ファイルハンドルの環境を指定します。
context は、ストリームの動作を変更できるオプションのセットです。 null が使用された場合、それは無視されます。
開始はオプションです。ファイル内の読み取りを開始する位置を指定します。このパラメータは PHP 5.1 の新しいパラメータです。
max_length はオプションです。読み取るバイト数を指定します。このパラメータは PHP 5.1 の新しいパラメータです。
説明
コンテキストのサポートは PHP 5.0.0 で追加されました。
タイムアウトまたはページが遅い場合、通常 2 つの解決策があります:

1. file_get_contents() の 3 番目のパラメーターを使用します

コードをコピーします コードは次のとおりです:

$url = " http://zhoz.com/zhoz.php";
$ctx = stream_context_create(array(
'http' => array('timeout' => 10)

); content( $url, 0, $ ctx);
if($result){
var_dump($result);
}else{
echo "バッファが空です";


この方法を使用しました。ローカルでは実行できますが、外部ネットワーク (環境: 中国→米国サーバー) でテストすると、基本的にタイムアウトになります。
TimeOut をテストした後は、基本的には役に立ちません。次の方法をお勧めします



2. CURL 拡張ライブラリを使用します

コードは次のとおりです:
$url = " http://zhoz.com/ zhoz.php"; try { echo date('Y-m-d h:i:s');
echo "";
//$buffer = file_get_contents($url);
echo date ('Y-m-d h:i:s');
} catch( Exception $e) {
echo "エラー ";
function zhoz_get_contents($url, $sec = 5) {
$ch =curl_init(); curl_setopt($ch,CURLOPT_URL,$url );
curl_setopt($ch,CURLOPT_TIMEOUT,$秒);
$content =curl_exec ($ ch); curl_close($ ch);

function vita_get_url_content($url) {
if(function_exists('file_get_contents')) {
$file_contents = file_get_contents($url)
} else {
$ch =curl_init();
curl_ setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); ;
}
$file_contents を返す
?>



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

www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/327837.html技術記事ようやく天気は回復しましたが、問題が発生しました。 2 つのサイト間でユーザー データを同期する際、PHP 関数 file_get_contents を使用してリモート ページをクロールして実行すると、接続がタイムアウトするとメッセージが出力されます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。