Umrechnungskurse per PHP / Yahoo Finance API

Eingetragen bei: Allgemein | 3

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/>';

3 Responses

  1. Tjommel

    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;
    }

  2. Sascha Beck

    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.

  3. Tjommel

    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.

Hinterlasse einen Kommentar