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

3 Kommentare

  1. 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. 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. 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.

Schreibe einen Kommentar zu Tjommel Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen