2014-09-21 42 views
0

我正在生成mySQL腳本。結果是這樣的...PHP變量爲.sql,壓縮它然後下載

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,當我們選擇下載爲壓縮。

請幫助謝謝

+2

看到這個問題&& => http://stackoverflow.com/q/21557062/發現下相關。 – 2014-09-21 15:10:48

回答

0

你可以使用PHP exec功能壓縮拉鍊服務器功能的文件,生成的sql文件之後。之後,您將需要檢查是否file exist並下載它。 你將需要一個文件夾來存儲文件和rutine來清理你的服務器,我的意思是刪除所有zip生成的文件。

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