我有一个脚本来下载我的数据库转储,但文件越来越大.我尝试用以下方法压缩它:
$dump = `mysqldump -u $username -p$password $dbname`;
$fp = fopen('php://temp', 'r+');
stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, array('level' => 9));
fputs($fp, $dump);
rewind($fp);
//Envoi du "fichier"
$this->setLayout(false);
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: SQL Dump");
header('Content-Disposition: attachment; filename="mydump.sql.zip"');
$this->fichier = stream_get_contents($fp);
Run Code Online (Sandbox Code Playgroud)
但是这会创建一个无效的zip文件.我错过了什么吗?
编辑
标题中也一定有错误,Firefox将文件显示为"HTM文档",我无法显示文件大小.
为什么不简单呢
$dump = `mysqldump ... | gzip -9 > somefile.gz`;
Run Code Online (Sandbox Code Playgroud)
并跳过整个"在PHP内部执行gzip"?
你甚至可以替换整个位
passthru('mysqldump ... | gzip -9');
Run Code Online (Sandbox Code Playgroud)
并将输出直接转储到客户端浏览器.
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |