dedlfix: Datenbanken abgleichen

Beitrag lesen

echo $begrueszung;

Ist es möglich 2 MySQL Datenbanken abzugleichen.

Sicher.

Ich habe eine MySQL Datenbank im Internet. Diese möchte ich mit meiner im lokalen Netz laufenden Datenbank abgleichen. Ist das überhaupt bzw. mit PHP möglich?

Die verwendete Programmiersprache ist dabei nicht wirklich relevant. Mit PHP könnte es insofern Probleme geben, als dass das Script wegen zu viel Daten und damit zu langer Laufzeit durch ein Timeout abgebrochen werden könnte. Aber daran ist ja nicht die Sprache an sich Schuld. :-)

Nehmen wir mal an, dass der Datenabgleich in nur einer Richtung stattfindet, vom Web nach lokal.

Du brauchst ein Kriterium, dass anzeigt, wann sich ein Datensatz geändert hat. Ein timestamp, der bei jeder Änderung aktualisiert wird, ist dafür geeignet. Und jeder Datensatz muss einen eindeutigen Schlüssel (primary key) haben.

Dann brauchst du einen Webservice, sprich auf dem fernen Webserver muss ein Script die geänderten Daten in eine geeignete Form bringen, die du lokal wieder zurücklesen kannst (PHP's serialize()/unserialize(), WDDX, XML, XMLRPC, SOAP, ...[1]). Als Parameter müsste der Zeitpunkt des letzten Abgleichs angegeben werden. Das Script liefert daraufhin die Daten mit timestamp > letzter Abgleich.

Und du brauchst lokal ein eigenständiges Programm oder ein Script, dass sich zum einen merkt, wann der letzte Abgleich war und dann den Webservice nach geänderten Daten befragt, und die in der lokalen DB einträgt oder ändert.

Wenn der Abgleich bidirektional stattfinden soll, dann wird es schwieriger, weil in der Zeit zwischen zwei Abgleichungen die eine DB nicht weiß, welche Schlüssel die andere vergibt. Du kannst zwar einen eindeutigen Bezeichner zum Schlüssel hinzufügen, müsstest dich dann aber um die Schlüssel-Generierung selbst kümmern, auto_increment reicht da nicht mehr.

echo "$verabschiedung $name";

[1] XMLRPC und SOAP beinhalten nicht nur das Ver- und Auspacken der Daten, sondern auch gleich noch die Übertragung. Wenn du dich dafür entscheidest, müsstest du damit einen "richtigen" Webservice aufbauen.