我想,由於 Swoole 可以讓 PHP 應用實現常駐記憶體,所以啟動時候勢必要掃描和載入許多檔案,這應該是導致啟動速度慢的罪魁禍首。
想到 php 還有 phar 包這個東西,我試圖用 phar 來解決這個問題。功夫不負有心人,我終於為 imi框架 實現了 phar 打包的相容和支援,測試結果表明:
使用 Phar 進行檔案列舉、讀取、include,無論是在本地硬碟還是 Samba 等網路檔案共用掛載,效能都比零散的檔案效能更強。
phar 作用強大,可以直接用一個包來部署專案,但在傳統 php 應用開發裡 phar 其實並不受歡迎,因為沒有多少好處。而在Swoole環境下,越來越多的框架支援常駐記憶體,可以在啟動時載入完想要用的檔案。
phar 從 php 5.3.0 開始就已經內建支援,所以相容性不需要擔心,也不需要安裝額外的擴充套件。
我特意為此寫了一個測試 Phar 檔案列舉、讀取、include 效能的 Demo:
https://gitee.com/yurunsoft/PharTest
有興趣的朋友可以拉下來,自己跑一下試試。
想要啟動 Phar 檔案打包功能,首先要在 php.ini 中設定 phar.readonly = Off
Phar 打包程式碼主要如下:
<?php $fileName = __DIR__ . '/test/test.phar'; if(is_file($fileName)) { unlink($fileName); } $phar = new Phar($fileName); $phar->stopBuffering(); $phar->buildFromDirectory(__DIR__ . '/src');
實際應用情況複雜,可以參考 php 官方文件,根據實際情況略作修改。
以上就是PHP的Phar包原來效能這麼強的詳細內容,更多請關注TW511.COM其它相關文章!