2

データベースのダンプをダウンロードするスクリプトがありますが、ファイルが大きくなっています。私はそれを圧縮しようとしました:

$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);

しかし、それは無効な zip ファイルを作成します。何か不足していますか?

編集

ヘッダーにも何か問題があるはずです.Firefoxはファイルを「HTMドキュメント」として表示し、ファイルサイズを表示できません.

4

1 に答える 1

8

なぜ単純にしないのですか

$dump = `mysqldump ... | gzip -9 > somefile.gz`;

「php内でgzipを行う」全体をスキップしますか?

ビット全体を

passthru('mysqldump ... | gzip -9');

出力をクライアント ブラウザに直接ダンプします。

于 2012-10-26T14:39:07.170 に答える