Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP变量转换为.sql,压缩它,然后下载_Php_Mysql_Download - Fatal编程技术网

PHP变量转换为.sql,压缩它,然后下载

PHP变量转换为.sql,压缩它,然后下载,php,mysql,download,Php,Mysql,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`,

我正在生成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\u dump的变量

然后,我使用以下脚本下载此变量

header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=backup_export.sql");
echo $sql_dump;
它工作得非常好。但是,该文件太大,可能高达20mb。而不是将其作为.sql文件下载。我想压缩并下载它。我不想在服务器上保留任何内容。它应该在运行中生成。就像我们从phpmyadmin中转储mySQL一样,当我们选择下载为压缩时

请帮助,谢谢

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

您可以使用file\u put\u 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();
请参阅相关下的Q&A=>。