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());