本文示範在 ThinkPHP 3.2 中整合 PclZip 庫,將 SQL 備份檔壓縮為 ZIP 存檔,節省儲存空間並便於傳輸。
ThinkPHP/Extend/Vendor/PclZip/ 目錄pclzip.lib.php 存在public function backup() {
// 原有備份邏輯生成 SQL 檔,假設路徑為 $dir
// ...
// 新增壓縮邏輯
import('ORG.Util.PclZip');
$zipName = './data/' . date('y-m-d') . '.zip';
$archive = new PclZip($zipName);
$v_list = $archive->create($dir);
if (file_exists($dir) && $v_list != 0) {
$this->success('備份成功 && 壓縮成功');
} else {
$this->error('備份失敗: ' . $archive->errorInfo(true));
}
}
PclZip::create() 接受檔案路徑字串(逗號分隔多檔)或陣列Q: 壓縮大檔案記憶體不足?
A: PclZip 為串流式壓縮,記憶體佔用較低;若仍報錯可調大 memory_limit。
Q: Windows 路徑分隔符問題?
A: 使用 DIRECTORY_SEPARATOR 或統一轉為 /。