JAN 0925
Umrechnungskurse per PHP / Yahoo Finance API
Eine schnell zusammengehackte Funktion, um aktuelle Währungskurse von Yahoo Finance zu ziehen. Details zu den URL-Parametern dort. Damit man deren Server nicht mit unnötigen Abfragen “hämmert”, nutzt dieses kleine Snippet den APC Cache, um die Werte für etwa drei Stunden zwischenzuspeichern. Damit file_get_contents() eine URL verarbeiten kann, müssen fopen wrappers in PHP freigegeben sein.
function getQuote($from, $to) {
$url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=l1&s='. $from . $to .'=X';
$key = 'cur_'.$from.'_'.$to;
$ttl = 60*60*3; // 3 Stunden
$curValue = apc_fetch($key);
if ($curValue === false) {
$curValue = trim(file_get_contents($url));
apc_store ($key, $curValue, $ttl);
}
return $curValue;
}
echo '1 Euro = ' . getQuote('EUR', 'USD') .' USD<br/>';
echo '1 Euro = ' . getQuote('EUR', 'GBP') .' GBP<br/>';

18. Oktober 2010 um 22:02 Uhr
Mein Server hat leider nicht APC Cache.
Daher habe ich es so gelöst:
function getQuote($from, $to){ //e.g. getQuote(‘EUR’, ‘USD’)
$url = ‘http://finance.yahoo.com/d/quotes.csv?e=.csv&f=l1&s='. $from . $to .’=X’;
$content = file_get_contents($url);
return $content;
}
19. Oktober 2010 um 08:27 Uhr
Ohne APC Cache geht es auch, aber bedenke, dass diese Variante dann bei jedem Aufruf die Yahoo-Seite kontaktiert. Wenn das dann so in eine Website eingebunden ist, kann das die Ladezeit merklich verlängern.
19. Oktober 2010 um 10:50 Uhr
In diesem Fall könnte man ja in einer Datei oder einer DB einfach das letzte Datum der abfrage speichern. Und dann einfach beim Aufruf der Seite checken ob am heutigen Tage schon die aktuellen Wechselkurse von Yahoo geholt wurden.