2014-09-21 3 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을 덤프하는 것처럼 zip으로 다운로드를 선택합니다.

도와주세요 감사

+2

관련 Q & A>> http://stackoverflow.com/q/21557062/ 관련 항목에서 찾을 수 있습니다. –

답변

0

당신은 SQL 파일이 생성 된 후, 우편 서버 기능을 사용하여 파일을 압축하기 위해 PHP exec 기능을 사용할 수 있습니다. 그 후에 file exist이 있는지 확인하고 다운로드해야합니다. 파일을 저장할 폴더가 있어야하고 서버를 정리하기위한 루틴이 있어야합니다. 이는 모든 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(); 
관련 문제