2010-11-29 49 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将文件写入磁盘,同时将其流回浏览器(警告,这实际上是一个更糟糕的主意)

相关问题