phpbar.de logo

Mailinglisten-Archive

[php] Eine Shell über SSH öffnen für Datenübertragung

[php] Eine Shell über SSH öffnen für Datenübertragung

Andi Voss andi at andis.mine.nu
Mit Jun 1 16:19:18 CEST 2005


Hi,

ich habe ein Projekt am Laufen, einen Online-Shop in ein 
Warenwirtschaftsprogramm zu integrieren. Das Warenwirtschaftsprogramm 
läuft mit einer Firebird Datenbank in einer Firma lokal. Der Online-Shop 
basiert auf genau der selben DB, die das Wawi benutzt und liegt auf 
unserem root-Server im Internet. Zur Zeit wird täglich eine Kopie der 
Wawi DB durchs Netz geschaufelt (ca. 50 mb gepackt und im Backupmodus, 
originale Größe ca. 400 mb), um den Online-Shop aktuell zu halten.

Meine Idee ist es jetzt, mit PHP-CLI über eine gesicherte SSH Verbindung 
http://us2.php.net/manual/de/function.ssh2-shell.php eine Shell zu 
öffnen und durch diese dann immer die Änderungen der lokalen DB ins 
Internet zu übertragen. Die Firebird DB unterstützt TRIGGER und STORED 
PROCEDURES, womit die geänderten Datensätze direkt nach einem 
INSERT,UPDATE oder DELETE in eine eigene Tabelle geschoben werden 
könnten. Diese extra Tabelle wollte ich dann mittels PHP-CLI auslesen 
und Datensatz für Datensatz über die Shell Verbindung in der entfernten 
DB wieder eintragen (auf dem entfernten Rechner dann auf der Shell 
mittels isql (Kommandozeile von firebird)).
Um das möglichst flexibel/schnell/zeitnah zu halten, wollte ich ein 
Skript in eine Endlosschleife setzen und in dieser ständig die extra 
Tabelle mit den Datensatzänderungen abfragen (vielleicht alle 5 sec.). 
Sobald dann ein Eintrag enthalten ist, kann der sofort ausgelesen und 
übertragen werden und die Online-Shop DB aktualisiert werden.
Irgendwie muss das PHP-Skript ja wissen, dass neue Einträge in der extra 
Tabelle vorhanden sind, daher die Idee mit der Endlosschleife.

Jetzt meine Bedenken:
- Ein PHP-Skript in einer Endlosschleife, wie wirkt sich das auf die 
Performance des einsetzenden Rechners aus? Man kann doch den 
Ressourcenverbrauch eines Skriptes einstellen oder? Gäbe es da 
irgendwelche vorhersehbaren Probleme?

- Alle ca. 5 sec. eine einfache Abfrage auf eine Tabelle sollte das 
DB-System auch nicht in Verlegenheit bringen...oder? Hardwaretechnisch 
ist auf beiden Seiten alles im grünen Bereich. Sollte halt auch in 
kritischen Situationen (viele Änderungen auf beiden Seiten) nicht den 
"normalen" Betrieb beeinflussen.

Was haltet Ihr von diesem allgemeinen Lösungsansatz?
Würde mich freuen, wenn sich jemand dazu äußern könnte.
Ideen, Kritik und Vorschläge sind natürlich willkommen.

Vielen Dank im Voraus.
Gruss Andi

php::bar PHP Wiki   -   Listenarchive