2017-11-20 4 views
1

データ更新されないのfile_get_contents:私は小さなスクリプトとgamercard.xbox.comからのゲーマースコアデータを取得しようとしている

<?php 
error_reporting(E_ALL); ini_set('display_errors', 1); 

$regex = '/<div id=\"Gamerscore\">(.+?)<\/div>/'; 
$gamertag = 'Stallion83'; 

try { 
    $URL = file_get_contents('http://gamercard.xbox.com/en-US/' . $gamertag . '.card'); 

    if ($URL == false) { 
     echo 'Error!'; 
    } 
} catch (Exception $e) { 
    echo $e; 
} 

preg_match($regex, $URL, $gs); 

// Extract integer value from string 
$gamerscore = filter_var($gs[1], FILTER_SANITIZE_NUMBER_INT); 

// Force gs_int to be integer so it can be used with number_format later 
$gs_int = (int)$gamerscore; 

$textFile = 'data/gamerscore_' . $gamertag . '.txt'; 

// Save gamerscore value into everyone's own txt file 
file_put_contents($textFile, $gs_int); 
?> 

は今、この作品

test.phpをし、それ内部にゲーマーコード番号のみを持つ.txtファイルをデータフォルダーに作成します。しかし、私の問題は、ゲーマーコア値が増加した後にスクリプトを再実行すると、スクリプトにエラーが表示されず、正常に実行されたように見えますが、.txtファイルに保存されるgamerscoreの値は古い値です。

URL http://gamercard.xbox.com/en-US/Stallion83.cardにアクセスして、番号がスクリプトの表示と異なることがわかります。

キャッシュの問題かもしれませんが、file_get_contentsはキャッシュを使用していないと思います。

指定したURLの最新のコンテンツを取得するためにfile_get_contentsに設定できるものは他にありますか?私はタイムアウトを使ってみましたが、何の違いもありませんでした。

+0

:多分ファイルが(何らかの理由で)新しい値で保存されていません。 – FirstOne

+0

$ gamerscoreまたは$ gs_intをエコーすると、古い値 – user1589375

+0

が得られます。これはサーバー側のキャッシュかもしれません。 – FirstOne

答えて

1

これは、キャッシュによって最もよく発生します。この場合、サーバと表示され、キャッシュされたバージョンのページが返されます。

多くの場合、ランダム値をURLに追加すると、回避策(たとえば、?foo)が発生することがあります。あなたのケースではそう

、のようなもの:考慮するだけでさまざまな問題

[...] . $gamertag . 'card?' . mt_rand()); 
関連する問題