Zugriff online und offline DB



  • tagchen...
    habe gerade ein Problem.
    habe eine Offlinedatenbank (Auftragsabwicklungssoftware) und einen Onlineshop / Onlinedatenbank. Die Datenbanken liegen auf zwei verschiedenen servern. Alles in PHP geschrieben.
    Nun möchte ich Daten von der offlineversion in die onlineversion übertragen. sollte alles automatisch geschehen. Gibt es da eine möglichkeit? Also ein php script welches daten aus der Offlinedatenbank holt und in die Onlinedatenbank schreibt?? oder muss ich dazu eine extra software in cgi, c++ etc schreiben???

    Ich hoffe ihr versteht was ich meine und könnt mir helfen.
    Ich danke für eure Mühe und Hilfe.
    Thx a lot
    bart



  • Wenn du nur hin und wieder abgleichen willst, wäre das einfachste, einfach die DB zu dumpen und in der Onlineversion einzuspeichern. Das geht unter MySQL z.B. mit mysql_dump.

    Wenn es regelmäßig sein soll, schreib dir nen Skript und richte es als CronJob an. Da macht man klassischerweise mit PERL, aber auch PHP ist theoretisch möglich.



  • danke erstmal für die schnelle antwort...

    1. was versteht man unter mysql_dump?? so wie ich das verstanden habe, muss ich das manuell machen oder?
    sollte aber alles automatisch geschehen. das heisst wenn sich offline der Bestand an Artikeln ändert soll ein Austausch der Daten zwischen Offline und Onlinedatenbank stattfinden. Spätestens aber nach circa 1h.

    2. okay, stimmt an cronjobs habe ich noch nicht gedacht und geht auch mit php. aber mit so nem script in php ist es doch nicht möglich 2 Datenbanken auf 2 unterschiedlichen Servern anzusprechen. oder habe ich da was verpasst.

    wäre schön wenn jemand was zu sagen kann, ob das mit php überhaupt möglich ist der Datenbank Connect zu 2 Datenbanken!

    THX a lot
    Bart



  • Selbstverständlich ist das Möglich! Sofern du die entsprechenden Rechte hast.

    mysql_dump ist ein Programm, mit dem Man Datenbankbackups einspielen und erstellen kann.

    Du kannst mit mysql_connect() (mal wieder am Beispiel von MySQL) einfach mit zwei verschiedenen Servern aufrufen, dann hast du zwei verschiedene Handle's und kannst entsprechend deine Inhalte kopieren. mysqli Macht es dir da aber leichter, da du dich um die Handles nicht mehr kümmern musst 😉



  • tagchen..
    also ich habe das gerade mal probiert mit den zwei connects aber irgendwie will der das nicht.der bricht nach 30 sek immer ab.
    aber ich dacht immer im connect kann man nur local angeben oder?



  • http://de.php.net/mysql_connect schrieb:

    resource mysql_connect ( [string $Server [, string $Benutzername [, string $Benutzerkennwort [, bool $neue_Verbindung [, int $client_flags]]]]] )

    Wofür ist deiner Meinung nach der Parameter $Server da?

    Es kommt nur darauf ein, ob ein externer MySQL-Server so konfiguriert ist, dass er eingehende externe Verbindungen zulässt. Das scheint bei dir nicht gegeben zu sein ...



  • tagchen...
    also ich habe das mal so probiert.

    $db = mysql_connect("IP", "user", "pwd") or die ("Verbindung fehlgeschlagen!");
    mysql_select_db("dbname", $db);
    $offline=mysql_query("SELECT * FROM tabelle");
    

    habe auch schon statt der IP einen dynalias genommen etc es funktioniert einfach nicht.
    in der aufzurufenden Datenbank habe ich alle zugriffe von ausserhalb gestattet. auch für den oben genannten user habe ich für host "%" gesetzt etc.
    folgende Fehlermeldung bringt der mir:

    Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'HOST / IP' (4) in /WEBSPACE1/www/xxxxxxxx.com/test.php on line 15
    Verbindung fehlgeschlagen!
    

    ich hoffe ihr könnt mir helfen und danke euch schonmal!
    THX a lot.
    bart



  • tagchen..

    also ich hänge immer noch an diesem problem, aber es gibt neues.

    habe das alles mal versucht per ODBC von office aus anzusprechen und das funktioniert. dann dachte ich mir, versuch ich das alles mal mit meinem lokalen phpmyadmin auf den mysql server im netz zu kommen. auch das klappt jetzt wunderbar.
    nur das php script will das nicht machen. habe auch noch mal gesucht nach den versionsnummern, weil ich irgendwo las, dass mit php 4.3.xx das nicht funzt.
    aber ich habe überall die neuesten php versionen.

    vielleicht wisst ihr ja woran es noch liegen könnte, denn ich bekomm hier langsam den koller....

    thx a lot
    bart



  • Lass mal das "or die()" weg, um ne genauere Fehleranalyse zu bekommen (oder print()e dir irgendwo mysql_error()).



  • mhm....
    also folgende fehlermeldungen bekomme ich:

    Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'xxxxxxx.dynalias.org' (4) in /WEBSPACE1/www/xxxxxx.com/test.php on line 7
    
    Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /WEBSPACE1/www/xxxxxx.com/test.php on line 8
    

    ?? wie jetzt.... hat das was mit der db zu tun die ich selektiere???



  • Überprüfe alle Angaben, die du an mysql_connect() übergibst, auf ihre Richtigkeit!
    Ansonsten scheinen genauere Fehlerangaben aus der ersten Fehlermeldung nicht ersichtlich. Die zweite Fehlermeldung kannst du ignorieren, da sie durch das Auftreten der ersten bedingt ist.



  • habe alle angaben überprüft.
    hostname stimmt. habe ausser dem dynalias auch die ip mit und ohne portnummer genommen. habe die portnummer geprüft, d.h ob der port überhaupt offen ist.
    der user und das pwd stimmen ebenso überein.

    ich versteh das nicht, denn mit meinem phpmyadmin funzt das alles wunderbar. und ich denke bzw dachte eigentlich immer, dass die routinen die phpmyadmin benutzt die selben sind wie bei php. also müssten die doch gleich funktionieren und somit müsste das script doch auch einwandfrei funzen. 😕 😕

    habe mir gerade noch überlegt, das ich mir eine txt datei erstellen lasse auf dem lokalen ordner und ich dann online drauf zugreife bzw. hochcopiere aber das funzt ja auch nicht, da unterschiedliche server.
    kommt immer diese fehlermeldung:

    HTTP wrapper does not support writeable connections. in /WEBSPACE1/www/xxxxxxxxx.com/test.php on line 11
    

    vielleicht habt ihr ja doch noch ein paar ideen woran es liegen könnte!?
    auf alle fälle erstmal danke für die hilfe und mühe.
    THX a lot
    bart


Anmelden zum Antworten