mysql mit php script stoppen und neu starten

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

mysql mit php script stoppen und neu starten

Postby dev_null » 10. August 2007 00:50

Hallo,

vorneweg, ich lasse xampp von einem USB-Stick laufen, daher läuft mysql nicht als dienst und soll das auch gar nicht, da ich keine Änderungen am Rechner vornehmen will, der gerade als Server dient. Das Ganze soll auch von einem DAU zu bedienen sein, also Stick rein, xampp-start.exe doppelklicken und arbeiten, danach xampp-stop und stick wieder raus.

Ich habe ein Script, welches die Datenbank-Dateien in einen Backup-Ordner kopiert. Wenn das ausgeführt wird, ist die Datenbank garantiert nicht in Benutzung, daher sollte es hier keine Probleme geben. Schwierig ist nur die Backups wieder einzuspielen, da Windows den Zugriff blockiert, solange der Mysql-Server läuft. Zumindest die Dateien, auf die kürzlich zugegriffen wurde. Meine Idee war jetzt, den Server kurz runterzufahren, die Dateien auszutauschen, und dann den Server wieder zu starten. Das klappt aber nicht, und Fehlermeldungen seh ich auch keine, außer denen von den misslungenen Lösch- und Kopierbefehlen. Irgendwelche Ideen?

Hier noch der betreffende Scriptausschnitt:
Code: Select all
  if ($_REQUEST["action"]=="BackupLaden")
  {
    $Name = htmlspecialchars($_POST["Name"]);
    $WorkDir = getcwd();
    system("../../mysql/bin/mysqladmin --user=pma --password= shutdown");
    chdir("../../mysql/data/basar_test");
    $ignore = array(1 => ".",
                    2 => "..",
                    3 => "Backup");
    $Directory = scandir(".");
    foreach($Directory as $Eintrag)
    {
      if (!in_array($Eintrag, $ignore))
      {
        unlink($Eintrag);
      }
    }
    $ignore = array(1 => ".",
                    2 => "..");
    $Directory = scandir("Backup/$Name");
    foreach($Directory as $Eintrag)
    {
      if (!in_array($Eintrag, $ignore))
      {
        copy("Backup/$Name/$Eintrag", $Eintrag);
      }
    }
    system("../../mysql/bin/mysqld --defaults-file=../../mysql/bin/my.cnf --standalone --console");
    chdir($WorkDir);
  }
dev_null
 
Posts: 4
Joined: 09. August 2007 23:28

Postby dev_null » 10. August 2007 01:21

Habe gerade bemerkt dass ich die Dateien problemlos im Explorer löschen kann, auch wenn ich gerade darauf zugegriffen habe. Erst nachdem mein restore-script seinen Fehler produziert hat ist das Löschen auch im Explorer nicht mehr möglich, bis ich den mysql server stoppe. Danach sind auf einmal alle Dateien bis auf die *.frm gelöscht. Und ausgerechnet die alphabetisch erste .frm Datei wurde schon von meinem Script gelöscht, die ist auch jetzt noch weg. Seltsam...
Wenn mir das jemand erklären kann, wäre ich schon SEHR dankbar!!!
dev_null
 
Posts: 4
Joined: 09. August 2007 23:28

Postby dev_null » 10. August 2007 14:37

Ok, ich habe mein Problem gelöst, oder besser umgangen.
Ich kopiere die Dateien mit vorangestelltem "New", dann benutze ich mysql um die alten tabellen zu droppen und benenne die neuen in die alten um.

Aber falls jemand mein ursprüngliches Problem lösen kann, wäre ich dennoch sehr dankbar, denn wer weiß wann ich (oder jemand anderes) doch wieder vor diesem Problem steht.
dev_null
 
Posts: 4
Joined: 09. August 2007 23:28


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 48 guests