file_get_contents 不更新数据
file_get_contents doesn't update the data
我正在尝试使用我的小脚本从 gamercard.xbox.com 获取玩家分数数据:
test.php
<?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);
?>
现在可以使用了,它会在数据文件夹中创建一个 .txt 文件,其中只有 gamerscore 编号。但我的问题是,如果我在 gamerscore 值增加后再次 运行 脚本,脚本不会给我任何错误,它似乎执行得很好,但它保存到 .txt 文件中的 gamerscore 值是旧的值。
我可以去 URL http://gamercard.xbox.com/en-US/Stallion83.card 看看这个数字和我的脚本显示的不一样。
我认为这可能是缓存问题,但我认为 file_get_contents 不使用缓存。
还有什么我可以为 file_get_contents 设置的,以强制它获取指定的 URL 的最新内容吗?我尝试使用超时,但没有任何区别。
这很可能是由 缓存 引起的。在这种情况下,服务器似乎返回页面的缓存版本。
通常,向 URL 添加一个随机值可能是一种解决方法,例如 ?foo
。
因此,在您的情况下,类似于:
[...] . $gamertag . 'card?' . mt_rand());
我正在尝试使用我的小脚本从 gamercard.xbox.com 获取玩家分数数据:
test.php
<?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);
?>
现在可以使用了,它会在数据文件夹中创建一个 .txt 文件,其中只有 gamerscore 编号。但我的问题是,如果我在 gamerscore 值增加后再次 运行 脚本,脚本不会给我任何错误,它似乎执行得很好,但它保存到 .txt 文件中的 gamerscore 值是旧的值。
我可以去 URL http://gamercard.xbox.com/en-US/Stallion83.card 看看这个数字和我的脚本显示的不一样。
我认为这可能是缓存问题,但我认为 file_get_contents 不使用缓存。
还有什么我可以为 file_get_contents 设置的,以强制它获取指定的 URL 的最新内容吗?我尝试使用超时,但没有任何区别。
这很可能是由 缓存 引起的。在这种情况下,服务器似乎返回页面的缓存版本。
通常,向 URL 添加一个随机值可能是一种解决方法,例如 ?foo
。
因此,在您的情况下,类似于:
[...] . $gamertag . 'card?' . mt_rand());