我有命令行來備份db和wnat來運行瀏覽器。我該怎麼做。因爲當我用輸入執行下面的代碼時,它不會給我輸出。爲什麼?我怎麼能如果數據庫不能正常工作,請實現數據庫備份。如何使用PHP和Xampp在瀏覽器中運行系統命令?
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile";
print system($command);
我有命令行來備份db和wnat來運行瀏覽器。我該怎麼做。因爲當我用輸入執行下面的代碼時,它不會給我輸出。爲什麼?我怎麼能如果數據庫不能正常工作,請實現數據庫備份。如何使用PHP和Xampp在瀏覽器中運行系統命令?
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile";
print system($command);
我會說這個功能之一system或exec。如果您需要的輸出中的exec會更好
system($command)
僅供參考從文檔
string exec (string $command [, array &$output [, int &$return_var ]])
和快速片斷函數簽名
exec($command, $output, $ret_var);
echo "return code: {$ret_var}" . PHP_EOL;
echo "output ------" . PHP_EOL;
foreach($output as $line){
print $line . PHP_EOL;
}
Eigther使用mysqladmin(english version)或你可以在你自己的頁面中使用ajax調用(通過JavaScript)。
聽起來像你想要的是passthru()
根據the documentation,它會直接將命令的輸出轉儲回瀏覽器。
$ret_val = null;
header("Content-type: application/gzip");
passthru("mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip", $ret_code);
# the extra equals sign below makes sure $ret_val isn't null
if($ret_val !== 0)
echo "Failboat";
這就是說,這聽起來像是一個非常脆弱的備份方式。您最好先將文件保存到磁盤並單獨下載。如果你真的想得到它,儘管嘗試使用tee將文件寫入磁盤,同時將其流回瀏覽器(警告,這實際上是一個更糟糕的主意)
我試過但我不能得到結果。我更新了我的編碼。它不會打印任何信息 – svk 2010-11-29 06:57:25
@vinothkumar:你的意思是什麼?不能得到結果? – RageZ 2010-11-29 06:59:08
預期的輸出是數據庫的zip文件。我沒有得到。這就是爲什麼我把我不能(我沒有得到預期的結果)。 – svk 2010-11-29 07:03:57