PHP变量到.sql,压缩它,然后下载


PHP variable to .sql, zip it and then download

我正在生成mySQL脚本。结果是这样的。。。

INSERT INTO `TABLE` (`v1`,`v2`) VALUES ('1', '2');
INSERT INTO `TABLE` (`v1`,`v2`) VALUES ('1', '2');
INSERT INTO `TABLE` (`v1`,`v2`) VALUES ('1', '2');
INSERT INTO `TABLE` (`v1`,`v2`) VALUES ('1', '2');
INSERT INTO `TABLE` (`v1`,`v2`) VALUES ('1', '2');

有一万多条线路。我将所有这些分配给一个名为$sql_dump 的变量

然后我使用以下脚本下载这个变量。。。

header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=backup_export.sql");
echo $sql_dump;

它运行得很好。但是,这个文件太大了,可能大到20mb。而不是将其作为.sql文件下载。我想把它压缩并下载。我不想在服务器上保留任何东西。它应该在飞行中产生。就像我们从phpmyadmin中转储mySQL一样,当我们选择压缩下载时。

请帮忙感谢

在生成sql文件后,可以使用php-exec函数用zip服务器函数压缩文件。之后,您将需要检查文件是否存在并下载它。您需要一个文件夹来存储文件,并需要一个芦丁来清理服务器,我的意思是删除所有zip生成的文件。

您可以使用file_put_content将字符串的内容放入文件中,并创建其zip。

$file = 'abc.sql';
file_put_contents($file, $sql_dump);
$z = new ZipArchive();
$z->open("sqldump.zip", ZIPARCHIVE::CREATE);
$current = file_get_contents($file);
$z->addFile($current);
$z->close();