[PHP] Zip 壓縮、解壓縮的技術實作選擇

本篇文章更新時間:2022/12/10
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


前陣子剛好在給我的 WordPress 開發工具箱 外掛整頓一下補新功能。其中就有寫到「打包」的功能,目的是以防準備接手或是協助調查的網站沒給 FTP/SFTP 等檔案存取權限,有這功能就可以直接針對主題或是外掛點選「打包」功能壓縮後下載回本機查看。

當時也沒多想,直接就是運用了 ZipArchive 方法,直到昨天整理最近更新的精選外掛,看到「Backup Bolt」這款強調他使用 PclZip 這套可以非常快速的論點,引起我注意。

於是今天好好找資料與拜讀他的實作方式,後來發現其實可能不是這麼一回事,尤其是這套 PclZip 已經好幾年都沒更新維護了,目前都是列在 Failover 容錯移轉機制 的最後一個手段,也就是「當 WordPress 網站主機的 PHP 不支援 Exec 指令直接對系統呼叫 Zip 指令,且也沒有安裝 Zip 的 extension 時,純粹 PHP 語法實作且不需要第三方函式庫相依的工具」。

儘管如此,這工具也是在早年主機環境不夠完善下提供了這堅強後盾,不過使用上對執行時間、執行記憶體等需求都斤斤計較,不是很容易駕馭。

但時至今日主機環境以大多已預設安裝 Zip 這個 extension 延伸套件,就算因為安全性關閉了 Exec 方法的使用,還是可以不影響(解)壓縮的運作。

參考了 BackupBuddy 的文件說明頁面 Differences in Zip Utilities,完善的備份外掛也有考量到打包工具的設計,所以在這項作業上順序就是 Exec -> ZipArchive -> PclZip

WordPress 核心也內建這套函式庫,用在外掛或主題抓回來後的解壓縮作業 unzip_file 從語法上也可以看到優先採用 ZipArchive 其次最後 PclZip

所以論相容性,肯定是沒其他的方案比 PclZip 好,但論效能與實作難易,甚至是往後的壓縮技術更新維護,選 ZipArchive 還是比較合適。

如果對 PclZip 有興趣的人,現在他的專案官網整個像是資料被洗掉一樣什麼都沒有,挺慘烈的XD 比較推薦閱讀 GitHub 上有人本地化的文件,看完會清楚很多。

要在 WordPress 裡面呼叫使用也很簡單,不用自己抓過一套了,寫文章前已經好幾年沒更新的版本停留在 2.8.2

最後,針對備份有研究過些外掛,目前看下來最強的大概還是 Akeeba 這家公司的作品。

他們連壓縮格式 JPA 都自己發明與實作,有興趣可以看看他們的 JPA 格式設計文件,團隊專注在網站的備份/還原工具上,非常專業!


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon