我有命令行来备份db和wnat来运行浏览器。我怎么能这样做。因为当我用输入执行下面的代码时它不会给我输出。为什么?我怎样才能实现db备份如果它没有成功。
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile";
print system($command);
答案 0 :(得分: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将文件写入磁盘,同时将其重新传输回浏览器(警告,这实际上是一个更糟糕的想法)
答案 1 :(得分:1)
我会说其中一项功能system或exec。如果你需要输出exec会更好
system($command)
仅供您参考doc
中的函数签名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;
}
答案 2 :(得分:0)
Eigther使用mysqladmin(english version),或者您可以在自己的某个网页上使用ajax调用(通过javascript)。