この問題は、最初に呼び出されたときにのみ発生します。2回目は、エラーも問題もありません。為替レートを更新するために1日1回呼び出されます。
private function updateRates()
{
$szContent = file_get_contents(self::OPT_URL);
if(!$szContent)
{
throw new Exception('XML resource unavailable.');
}
$pXML = new SimpleXMLElement($szContent);
$aRates = array();
foreach($pXML->Cube->Cube->Cube as $pChildren)
{
$aRates[(string) $pChildren['currency']] = (float) $pChildren['rate'];
}
$pFile = fopen(self::OPT_FILE, 'w+');
fwrite($pFile, json_encode($aRates));
fclose($pFile);
touch($pFile);
}