2010-11-29 45 views
2


我有命令行來備份db和wnat來運行瀏覽器。我該怎麼做。因爲當我用輸入執行下面的代碼時,它不會給我輸出。爲什麼?我怎麼能如果數據庫不能正常工作,請實現數據庫備份。如何使用PHP和Xampp在瀏覽器中運行系統命令?

$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile"; 
print system($command); 

回答

1

我會說這個功能之一systemexec。如果您需要的輸出中的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; 
} 
+0

我試過但我不能得到結果。我更新了我的編碼。它不會打印任何信息 – svk 2010-11-29 06:57:25

+0

@vinothkumar:你的意思是什麼?不能得到結果? – RageZ 2010-11-29 06:59:08

+0

預期的輸出是數據庫的zip文件。我沒有得到。這就是爲什麼我把我不能(我沒有得到預期的結果)。 – svk 2010-11-29 07:03:57

2

聽起來像你想要的是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將文件寫入磁盤,同時將其流回瀏覽器(警告,這實際上是一個更糟糕的主意)

相關問題