sqlite (lokal) --> mysql (Webserver)

Hallo,

ich brauche mal eine Anregung, Idee …

Ich habe auf einem Linux System bei mir Zuhause eIn
Tool laufen, das seine Werte in eine sqlite Datenbank
schreibt (alle 10 Minuten einen neuen Datensatz).

diese Daten möchten ich gleichzeitig auch in meiner
mysql Datenbank auf meinem Webserver haben. Wie
könnte man das am besten umsetzen?

gruss

Hallo,

na in dem die einfach an server schickst.
am einfachsten per link zu einer Datei auf dem Server
xxxxxxxx.de/insertDB.php?a=sdsfsf&b=sadsds&usw

Den Link kannst ja per include aufrufen und fertig.

Cheffchen

Danke. Schonmal auf deinen link geklickt :)Schicke ich damit die komplette sqlite dB rüber oder
nur die neuen Einträge?

Hallo,

na nur den neuen eintrag, der dann einfach per insert in die DB eingefügt wird.

Cheffchen

Sei aber vorsichtig. Ich weiß nicht, um welche Daten es sich handelt, aber u.U. öffnest du so alle Tore zu deiner DB.

Ein Authentifizierungsschlüssel in der URL wäre evtl. angebracht.

Per link ist nicht die Lösung, du müsstest ja jedesmal draufklicken.

Wie kann ich einen HTTP POST-Request absenden?
Häufig benötigte Codeschnipsel - Wie kann ich einen HTTP POST-Request absenden?

Zugriff von aussen lässt mein Webhoster nicht zu.

Hatte erst die Idee das über ne CSV zu machen, aber das
scheint mir nicht die beste Lösung weil halt alle 10 Minuten
ein neuer Datensatz kommt.

vor allem kann aus mal vorkommen, das der webhoster ausfällt, warum auch immer.
dann wäre vermutlich ein oder mehrere datensätze futsch auf der mysql-db.

@bdt600
gucke ich mir an, danke

Hallo

wäre es ggf einfacher die Daten aus eine mySQL (Linux, Lokal) in
eine mySQL DB (Webserver) zu synchronisieren?

Du wirst zu 99,9% daran scheitern, weil in der Regel ein Zugriff auf den Datenbankserver von außen aus Sicherheitsgründen blockiert ist.

Ein Cronjob auf der lokalen Maschine sollte den URL-Aufruf komfortabel erledigen können.

Du meinst wohl Zugriff auf den MySQL-Server. Die Zugriffsberechtigung ist auch nicht nötig, schließlich wird eine Datei des Webservers aufgerufen, die internen Zugriff auf die MySQL-Datenbanken hat. Demnach wäre eine Lösung mit PHP möglich.

Das halte ich für wesentlich aufwendiger.

Warum nutzt du auf dem Webserver nicht auch SQLite? Dann kannst du die Daten einfach regelmäßig per FTP hochschieben.
Rsync wäre ne Möglichkeit dafür.

MfG

Der Datenverkehr würde exponentiell ansteigen. Täglich dürften rund 150 Datensätze hinzukommen. Nach nur einem Monat sind das über 4000 Zeilen, die alle zehn Minuten (!) übermittelt würden.

Ok, das wäre Blödsinn :slight_smile:
Andere Möglichkeit wäre nen SSH Tunnel zum Server, dann kannst du von deinem lokalen System auch direkt die DB ansprechen wenn dein Provider sowas zulässt. So arbeiten wir hier bei uns auch.

bevor ich mich an die Arbeit mache, das wäre das sinnvollste?

→ Neuste Daten aus SQlite oder mySQL per Cronjob mit nem PHP Script auslesen und in eine CSV schreiben
→ CSV per FTP mit Cronjob auf Server schieben (Geht das überhaupt mittels Cronjob?)
→ CSV auf Server per Cronjob und PHP Script wieder einlesen

Keine Ahnung ob der das zulässt, habe dieses Paket:
http://www.sysprovide.de/Basic-M.20.0.html

Gruss

Ich würde

diese jedoch nicht in eine CSV schreiben. Die Daten werden per HTTP-GET und mit einem Sicherheitsschlüssel an den Webserver geliefert.

Lokale Maschine abstrakt:
[php]// Ermittle Informationen aus SQLite und speichere sie in $info[1-…]

$get = ‚?spalte1=‘.$info1.‚&spalte2=‘.$info2.‚&…‘;
$security = ‚&sec=sichererLangerUnbekanntesSchluessel‘;
$url = ‚http://example.com/insert.php‘.$get.$security;

if(file_get_contents($url) === ‚true‘){
// Erfolg
}else{
// Fehler
}[/php]

Entfernter Webserver abstrakt:
[php]if(!empty($_GET[‚sec‘]) && $_GET[‚sec‘] === ‚sichererLangerUnbekanntesSchluessel‘){
// Speichere GET-Parameter als neuer Eintrag in der MySQL-DB
if(query()){
echo ‚true‘;
}else{
echo ‚false‘;
}
}[/php]