Berikut informasi yang saya miliki:
Saya bekerja dengan sistem berbasis Linux menggunakan MySQL dan PHP5. Saya harus dapat menghasilkan mysqldump
dari dalam file .php, dan kemudian menyimpan dump itu dalam file di server di lokasi yang akan saya tentukan.
Karena saya adalah pemula PHP, saya ingin seseorang memberi saya bantuan, panduan, atau kode, yang akan melakukan apa yang saya butuhkan. Ini harus dijalankan dari jarak jauh dari Internet.
mysqldump
olehsystem()
.Jawaban:
Anda dapat menggunakan
exec()
fungsi tersebut untuk menjalankan perintah eksternal.Catatan: antara
shell_exec()
danexec()
, saya akan memilih yang kedua, yang tidak mengembalikan output ke skrip PHP - tidak perlu skrip PHP untuk mendapatkan seluruh dump SQL sebagai string: Anda hanya perlu menulisnya ke file, dan ini bisa dilakukan dengan perintah itu sendiri.Perintah eksternal itu akan:
mysqldump
, dengan parameter yang tepat,Sebagai contoh :
Artinya kode PHP Anda akan terlihat seperti ini:
Tentu saja, terserah Anda untuk menggunakan informasi koneksi yang benar, menggantinya
...
dengan yang itu.sumber
exec()
tidak akan kembali sampai perintah selesai; jadi, taruh saja beberapaecho "dump complete"
setelah meneleponexec()
/usr/local/mysql/bin/mysqldump
exec("C:/pathto/mysql/bin/mysqldump.exe <options as above>");
Jika Anda ingin membuat cadangan untuk mengunduhnya melalui browser, Anda juga dapat melakukannya tanpa menggunakan file.
Fungsi php passthru () akan langsung mengarahkan output dari mysqldump ke browser. Dalam contoh ini, ini juga akan di-zip.
Pro: Anda tidak perlu berurusan dengan file temp.
Kontra: Tidak akan berfungsi di Windows. Mungkin memiliki batasan dengan kumpulan data yang besar.
sumber
Lihat di sini: https://github.com/ifsnop/mysqldump-php ! Ini adalah solusi asli yang ditulis dalam php.
Anda dapat menginstalnya menggunakan komposer, dan itu semudah melakukan:
Ini mendukung pengguna tingkat lanjut, dengan banyak opsi yang disalin dari mysqldump asli.
Semua opsi dijelaskan di halaman github, tetapi kurang lebih bersifat auto-explicative:
sumber
exec
dan / ataushell_exec
dinonaktifkan oleh keamanan, mysqldump-php berfungsi dengan baik! Baru saja mencobanya sekarang di server Umbler dan berhasil mendapatkan dumpnya . Terima kasih banyak atas tipnya!Silakan merujuk ke tautan berikut yang berisi scriptlet yang akan membantu Anda: http://davidwalsh.name/backup-mysql-database-php
Catatan: Skrip ini mungkin berisi bug dengan tipe data NULL
sumber
Untuk alasan keamanan, disarankan untuk menentukan kata sandi dalam file konfigurasi dan bukan dalam perintah (pengguna dapat menjalankan
ps aux | grep mysqldump
dan melihat kata sandi).sumber
Di sini Anda dapat menemukan solusi komprehensif untuk membuang struktur dan data mysql seperti di PMA (dan tanpa menggunakan exec, passthru, dll.):
https://github.com/antarasi/MySQL-Dump-with-Foreign-keys
Ini adalah proyek percabangan dszymczuk dengan perangkat tambahan saya.
Penggunaannya sederhana
bekerja seperti pesona :-)
sumber
Selama Anda diizinkan menggunakan exec () , Anda dapat menjalankan perintah shell melalui kode PHP Anda.
Jadi dengan asumsi Anda tahu cara menulis mysqldump di baris perintah, yaitu
maka Anda dapat menggunakan ini sebagai parameter untuk fungsi exec ().
sumber
Jawaban MajorLeo menunjukkan saya ke arah yang benar tetapi tidak berhasil untuk saya. Saya telah menemukan situs ini yang mengikuti pendekatan yang sama dan berhasil.
Saya harap ini membantu orang lain!
sumber
Nah, Anda selalu dapat menggunakan pemanggilan fungsi sistem PHP.
http://php.net/manual/en/function.system.php
http://www.php.net/manual/en/function.exec.php
Itu menjalankan program baris perintah dari PHP.
sumber
<?php exec('mysqldump --all-databases > /your/path/to/test.sql'); ?>
Anda dapat memperluas perintah dengan opsi apa pun yang diambil mysqldump. Gunakan
man mysqldump
untuk lebih banyak opsi (tapi saya rasa Anda tahu itu;))sumber
Berikut opsi lain berbasis PHP asli: https://github.com/2createStudio/shuttle-export
sumber
sumber
Tidak ada kode di atas yang berhasil untuk saya. Saya menggunakan windows. Di bawah Kode bekerja untuk saya ...
Ini akan menyimpan file di folder proyek Anda sesuai dengan permintaan Anda, data apa pun yang Anda inginkan.
sumber
Untuk membuang database menggunakan shell_exec (), di bawah ini adalah metodenya:
sumber
sumber