ようやく天気は回復しましたが、問題が発生しました。 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
true
http://www.bkjia.com/PHPjc/327837.html技術記事ようやく天気は回復しましたが、問題が発生しました。 2 つのサイト間でユーザー データを同期する際、PHP 関数 file_get_contents を使用してリモート ページをクロールして実行すると、接続がタイムアウトするとメッセージが出力されます...