Hier sind die Informationen, die ich habe:
Ich arbeite mit einem Linux-basierten System mit MySQL und PHP5. Ich muss in der Lage sein, einen mysqldump
aus einer .php-Datei zu generieren und diesen Speicherauszug dann in einer Datei auf dem Server an einem von mir angegebenen Speicherort zu speichern.
Da ich ein PHP-Nooblet bin, möchte ich, dass mir jemand Unterstützung, Anleitung oder Code gibt, der das tut, was ich benötige. Dies müsste remote aus dem Internet ausgeführt werden.
mysqldump
von verwendensystem()
.Antworten:
Mit der
exec()
Funktion können Sie einen externen Befehl ausführen.Hinweis: Zwischen
shell_exec()
undexec()
würde ich die zweite auswählen, die die Ausgabe nicht an das PHP-Skript zurückgibt. Das PHP-Skript muss nicht den gesamten SQL-Speicherauszug als Zeichenfolge abrufen. Sie müssen ihn nur in eine Datei schreiben. und dies kann durch den Befehl selbst erfolgen.Dieser externe Befehl wird:
mysqldump
, mit den richtigen Parametern,Zum Beispiel :
Was bedeutet, dass Ihr PHP-Code so aussehen würde:
Natürlich liegt es an Ihnen, die richtigen Verbindungsinformationen zu verwenden und diese
...
durch diese zu ersetzen .quelle
exec()
wird nicht zurückkehren, bis der Befehl beendet ist; Also, setzen Sie einfach einigeecho "dump complete"
nach dem Anrufexec()
/usr/local/mysql/bin/mysqldump
exec("C:/pathto/mysql/bin/mysqldump.exe <options as above>");
Wenn Sie ein Backup erstellen möchten, um es über den Browser herunterzuladen, können Sie dies auch ohne Verwendung einer Datei tun.
Die PHP-Funktion passthru () leitet die Ausgabe von mysqldump direkt an den Browser weiter. In diesem Beispiel wird es auch komprimiert.
Pro: Sie müssen sich nicht mit temporären Dateien befassen.
Con: Funktioniert nicht unter Windows. Kann Grenzen mit riesigen Datensätzen haben.
quelle
Schauen Sie hier: https://github.com/ifsnop/mysqldump-php ! Es ist eine native Lösung in PHP geschrieben.
Sie können es mit Composer installieren und es ist so einfach wie:
Es unterstützt fortgeschrittene Benutzer mit vielen Optionen, die vom ursprünglichen mysqldump kopiert wurden.
Alle Optionen werden auf der Github-Seite erklärt, sind jedoch mehr oder weniger automatisch erklärend:
quelle
exec
und / odershell_exec
deaktiviert wurden, funktioniert mysqldump-php hervorragend! Habe es gerade auf Umblers Servern versucht und den Dump erfolgreich erhalten. Vielen Dank für den Tipp!Bitte verweisen Sie auf den folgenden Link, der ein Skript enthält, das Ihnen helfen wird: http://davidwalsh.name/backup-mysql-database-php
Hinweis: Dieses Skript enthält möglicherweise Fehler mit NULL-Datentypen
quelle
Aus Sicherheitsgründen wird empfohlen, das Kennwort in einer Konfigurationsdatei und nicht im Befehl anzugeben (ein Benutzer kann ein
ps aux | grep mysqldump
Kennwort ausführen und das Kennwort anzeigen).quelle
Hier finden Sie eine umfassende Lösung zum Speichern von MySQL-Strukturen und -Daten wie in PMA (und ohne Verwendung von exec, passthru usw.):
https://github.com/antarasi/MySQL-Dump-with-Foreign-keys
Es ist eine Abzweigung des dszymczuk-Projekts mit meinen Verbesserungen.
Die Verwendung ist einfach
klappt wunderbar :-)
quelle
Solange Sie exec () verwenden dürfen , können Sie Shell-Befehle über Ihren PHP-Code ausführen.
Angenommen, Sie wissen, wie man den mysqldump in die Befehlszeile schreibt, d. H.
Dann können Sie dies als Parameter für die Funktion exec () verwenden.
quelle
Die Antwort von MajorLeo weist mich in die richtige Richtung, aber es hat bei mir nicht funktioniert. Ich habe diese Seite gefunden , die dem gleichen Ansatz folgt und funktioniert hat.
Ich hoffe es hilft jemand anderem!
quelle
Nun, Sie können immer den Systemfunktionsaufruf von PHP verwenden.
http://php.net/manual/en/function.system.php
http://www.php.net/manual/en/function.exec.php
Damit wird jedes Befehlszeilenprogramm von PHP ausgeführt.
quelle
<?php exec('mysqldump --all-databases > /your/path/to/test.sql'); ?>
Sie können den Befehl mit allen Optionen erweitern, die mysqldump natürlich verwendet. Verwenden Sie
man mysqldump
für mehr Optionen (aber ich denke, Sie wussten das;))quelle
Hier ist eine weitere native PHP-basierte Option: https://github.com/2createStudio/shuttle-export
quelle
quelle
Keiner der oben genannten Codes hat bei mir funktioniert. Ich benutze Windows. Der folgende Code hat für mich funktioniert ...
Dadurch wird die Datei in Ihrem Projektordner entsprechend Ihrer Abfrage gespeichert, unabhängig von den gewünschten Daten.
quelle
Um die Datenbank mit shell_exec () zu sichern, gehen Sie wie folgt vor:
quelle
quelle