Shell, PHP: Aktiendaten per Cronjob in Datenbank sichern

Zum grundlegenden Problem: Über die Yahoo Finance API sollen automatisiert Aktien-/Währungskurse geholt und in einer MySQL-Datenbank gesichert werden.

Umgesetzt wurde das Ganze mit einem Raspberry Pi. Der Aufruf des PHP-Script erfolgt mittels Cronjob.

Die Daten selbst werden mit einem PHP-Script geholt, aufbereitet und dann in die MySQL-Datenbank übertragen. Die Erstellung der MySQL-Datenbank spare ich hier aus.

Zunächst das PHP-Script (stocks.php):

#!usr/bin/php
<?php
/*
Es werden Daten aus der Yahoo Finance API geholt,
aufbereitet und in eine MySQL-Datenbank übertragen.

@version    1.0 21/02/2017
*/

// Variablen definieren
$url = “;            // URL zu Yahoo Finance
$daten = array();        // Daten aus der CSV-Datei

// Datenbankverbindung herstellen
$db_host = ‚localhost‘;
$db_user = ‚user‘;
$db_password = ‚pwd‘;
$db_name = ‚aktiendaten‘;

$db = new mysqli($db_host, $db_user, $db_password, $db_name);

if ($db->connect_error){
die(„Auf Datenbank kann nicht zugegriffen werden: “ . $db->connect_error);
}

// Daten bei Yahoo Finance holen
$url=’http://download.finance.yahoo.com/d/quotes.csv?s=BAS.DE,GBPEUR=X,USDEUR=X&f=snl1de7jke8rc4&e=.csv‘;

// Daten in das Array $daten packen;
$daten = file($url);

foreach($daten as $num => $zeile) {

// Whitespeaces und andere Zeichen entfernen
$zeile = trim($zeile);

// N/A durch 0 ersetzen
$zeile = str_replace(„N/A“, 0, $zeile);

// Array aus String erzeugen
$csv = str_getcsv($zeile, „,“);

// Daten zuweisen
$Kuerzel = $csv[0];
$Bezeichnung = $csv[1];
$Kurs = $csv[2];
$Div_Prognose = $csv[3];
$EPS = $csv[4];
$Low = $csv[5];
$High = $csv[6];
$EPS_NextY = $csv[7];
$KGV = $csv[8];
$Waehrung = $csv[9];

// SQL-Statement
$sql = „INSERT INTO Daten(Kuerzel, Bezeichnung, Kurs, Div_Prognose, EPS, Low, High, EPS_NextY, KGV, Waehrung) VALUES (‚“.$Kuerzel.“‚, ‚“.$Bezeichnung.“‚, $Kurs, $Div_Prognose, $EPS, $Low, $High, $EPS_NextY, $KGV, ‚“.$Waehrung.“‚)“;
//    echo „SQL $num: „.$sql.“\n“;

// Daten schreiben
if(!$result = $db->query($sql)){
die(„Fehler beim Schreiben der Daten in die Datenbank: „.$db->error.“\n“);
};

}

// Datenbankverbindung beenden
$db->close();

?>

Das PHP-Script (stocks.php) wurde mittels

chmod +x stocks.php

ausführbar gemacht.

Die Benutzer Crontab wurde angepasst:

45 23 * * 1-5 /usr/bin/php /home/pi/aktien/stocks.php >> /home/pi/aktien/cron.log 2>&1

Das PHP-Scrit wird täglich von Montag bis Freitag um 23:45 Uhr ausgeführt. Rückmeldungen werden in der Datei /home/pi/aktien/cron.log protokolliert.

Keine Kommentare möglich.