我正在生成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');
有超过10,000行。我将所有这些分配给一个名为$ sql_dump
的变量然后我使用以下脚本下载此变量...
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=backup_export.sql");
echo $sql_dump;
它工作得非常好。但是,文件太大,可能大到20mb。而不是将其下载为.sql文件。我想拉链并下载它。我不想在服务器上保留任何内容。它应该在运行中生成。就像我们从phpmyadmin转储mySQL一样,当我们选择下载为zipped时。
请帮助谢谢
答案 0 :(得分:0)
生成sql文件后,您可以使用php exec函数压缩带有zip服务器功能的文件。之后,您需要检查是否file exist并下载它。 您需要有一个用于存储文件的文件夹和一个用于清理服务器的rutine,我的意思是删除所有zip生成的文件。
答案 1 :(得分:0)
您可以使用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();