之前有在群組裡看到人說,有些 Swoole 框架啟動速度慢,尤其是掛載的網路硬碟下運作尤其的慢。
我想,由於 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套件原來效能這麼強的詳細內容。更多資訊請關注PHP中文網其他相關文章!