2017-11-20 6 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 파일을 만듭니다. 하지만 내 문제는 내가 다시 스크립트를 실행하면 gamerscore 값이 증가 스크립트는 내게 어떤 오류를주지 않습니다 그리고 그것은 잘 실행하는 것 같다지만 .txt 파일에 저장 gamerscore 값은 이전 값입니다.

URL http://gamercard.xbox.com/en-US/Stallion83.card으로 이동하여 본인의 스크립트와 다른 번호를 볼 수 있습니다.

캐싱 문제 일지 모르지만 file_get_contents가 캐싱을 사용하지 않는다고 생각합니다.

file_get_contents가 지정한 URL의 최신 내용을 강제로 가져올 수있는 다른 설정이 있습니까? 나는 타임 아웃을 사용해 보았지만 아무런 효과가 없었다.

+0

그냥 다른 문제는 고려해야 할 어쩌면 파일이 (어떤 이유) 새 값으로 저장되지 않습니다. – FirstOne

+0

$ gamerscore 또는 $ gs_int를 반향하는 경우 이전 값인 – user1589375

+0

이 여전히 서버 측 캐싱 일 수 있습니다. – FirstOne

답변

1

이것은 대부분 캐시에 의해 주로 발생합니다. 이 경우 서버이며 캐시 된 버전의 페이지을 반환합니다.

흔히 URL에 임의의 값을 추가하면 해결 방법이 될 수 있습니다 (예 : ?foo).

그래서, 같은 귀하의 경우, 뭔가 :

[...] . $gamertag . 'card?' . mt_rand());