データ更新されないの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に設定できるものは他にありますか?私はタイムアウトを使ってみましたが、何の違いもありませんでした。
:多分ファイルが(何らかの理由で)新しい値で保存されていません。 – FirstOne
$ gamerscoreまたは$ gs_intをエコーすると、古い値 – user1589375
が得られます。これはサーバー側のキャッシュかもしれません。 – FirstOne