PHP 的 Phar 包原来性能这么强!
之前有在群里看到人說,有一些 Swoole 框架啟動(dòng)速度慢,尤其是掛載的網(wǎng)絡(luò)硬盤下運(yùn)行尤其的慢。
我想,由于 Swoole 可以讓 PHP 應(yīng)用實(shí)現(xiàn)常駐內(nèi)存,所以啟動(dòng)時(shí)候勢必要掃描和加載許多文件,這應(yīng)該是導(dǎo)致啟動(dòng)速度慢的罪魁禍?zhǔn)住?/p>
想到 php 還有 phar 包這個(gè)東西,我試圖用 phar 來解決這個(gè)問題。功夫不負(fù)有心人,我終于為 imi框架 實(shí)現(xiàn)了 phar 打包的兼容和支持,測試結(jié)果表明:
使用 Phar 進(jìn)行文件枚舉、讀取、include,無論是在本地硬盤還是 Samba 等網(wǎng)絡(luò)文件共享掛載,性能都比零散的文件性能更強(qiáng)。phar 作用強(qiáng)大,可以直接用一個(gè)包來部署項(xiàng)目,但在傳統(tǒng) php 應(yīng)用開發(fā)里 phar 其實(shí)并不受歡迎,因?yàn)闆]有多少好處。而在Swoole環(huán)境下,越來越多的框架支持常駐內(nèi)存,可以在啟動(dòng)時(shí)加載完想要用的文件。
phar 從 php 5.3.0 開始就已經(jīng)內(nèi)置支持,所以兼容性不需要擔(dān)心,也不需要安裝額外的擴(kuò)展。
我特意為此寫了一個(gè)測試 Phar 文件枚舉、讀取、include 性能的 Demo:https://gitee.com/yurunsoft/P...
有興趣的朋友可以拉下來,自己跑一下試試。
想要啟動(dòng) Phar 文件打包功能,首先要在 php.ini 中配置 phar.readonly = OffPhar 打包代碼主要如下:
<?php $fileName = __DIR__ . '/test/test.phar'; if(is_file($fileName)) {unlink($fileName); } $phar = new Phar($fileName); $phar->stopBuffering(); $phar->buildFromDirectory(__DIR__ . '/src');實(shí)際應(yīng)用情況復(fù)雜,可以參考 php 官方文檔,根據(jù)實(shí)際情況略作修改。
原文地址:https://blog.yurunsoft.com/a/...
總結(jié)
以上是生活随笔為你收集整理的PHP 的 Phar 包原来性能这么强!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .net core 微服务之API网关
- 下一篇: 深入解析PHP中逗号与点号的区别