PHP的Phar包原來效能這麼強

2020-07-16 10:05:51
之前有在群裡看到人說,有一些 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包原來效能這麼強的詳細內容,更多請關注TW511.COM其它相關文章!