动态创建数据库备份

Man*_*anu 1 php mysql backup symfony1

我想在我的应用程序中有一个链接,允许我下载我的数据库的转储.(点菜的phpmyadmin,没有获取保存在服务器上).

(我以为我会用php:// temp来避免在服务器上保存东西)

但是如何创建转储文件?我看到它的方式我有两个选择:

1]使用system()和mysqldump

$command = `mysqldump -u [username] -p [password] [databasename] | gzip > db.sql.gz`;
Run Code Online (Sandbox Code Playgroud)

但是如何在php:// temp上编写转储?

2]自己创建文件并将其写入php:// temp

$tables = mysql_query ("SHOW TABLES");

while ($i = mysql_fetch_array($tables))
{
  $i = $i['Tables_in_'.$dbname];

  $create = mysql_fetch_array(mysql_query ("SHOW CREATE TABLE ".$i));
  echo("\n# -------------------------------------------------------- \n");
  echo("\n# \n# Table structure for table `".$create['Table']."` \n# \n");

  echo("\n".$create['Create Table'].";\n\n");

  echo("# \n# Dumping data for table `".$create['Table']."` \n# \n\n");

  $sql = mysql_query ("SELECT * FROM ".$i);
  if (mysql_num_rows($sql)) {
      while ($row = mysql_fetch_row($sql)) {
          foreach ($row as $j => $k) {
              $row[$j] = "'".mysql_escape_string($k)."'";
          }

          echo("INSERT INTO $i VALUES(".implode(",", $row).");\n");
      }    
  }
}
Run Code Online (Sandbox Code Playgroud)

我应该走哪条路?

Sha*_*ngh 5

你应该采取的第一个选择

mysqldump旨在为DB备份或创建sql文件.

一个例子

    $command = "mysqldump -u ".USER." -p'".PASSWORD."'  ".DATABASE." ". $value."  -r \"".$backupPath."/".$backupFile."\" 2>&1";

    $res=system($command);
Run Code Online (Sandbox Code Playgroud)