以前有在羣裏看到人說,有一些 Swoole 框架啓動速度慢,尤爲是掛載的網絡硬盤下運行尤爲的慢。php
我想,因爲 Swoole 可讓 PHP 應用實現常駐內存,因此啓動時候勢必要掃描和加載許多文件,這應該是致使啓動速度慢的罪魁禍首。html
想到 php 還有 phar 包這個東西,我試圖用 phar 來解決這個問題。功夫不負有心人,我終於爲 imi框架 實現了 phar 打包的兼容和支持,測試結果代表:git
使用 Phar 進行文件枚舉、讀取、include,不管是在本地硬盤仍是 Samba 等網絡文件共享掛載,性能都比零散的文件性能更強。網絡
phar 做用強大,能夠直接用一個包來部署項目,但在傳統 php 應用開發裏 phar 其實並不受歡迎,由於沒有多少好處。而在Swoole環境下,愈來愈多的框架支持常駐內存,能夠在啓動時加載完想要用的文件。框架
phar 從 php 5.3.0 開始就已經內置支持,因此兼容性不須要擔憂,也不須要安裝額外的擴展。性能
我特地爲此寫了一個測試 Phar 文件枚舉、讀取、include 性能的 Demo:https://gitee.com/yurunsoft/PharTest測試
有興趣的朋友能夠拉下來,本身跑一下試試。ui
想要啓動 Phar 文件打包功能,首先要在
php.ini
中配置phar.readonly = Off
code
Phar 打包代碼主要以下:htm
<?php $fileName = __DIR__ . '/test/test.phar'; if(is_file($fileName)) { unlink($fileName); } $phar = new Phar($fileName); $phar->stopBuffering(); $phar->buildFromDirectory(__DIR__ . '/src');
實際應用狀況複雜,能夠參考 php 官方文檔,根據實際狀況略做修改。