PHP 的 Phar 包原來性能這麼強!

以前有在羣裏看到人說,有一些 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 = Offcode

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 官方文檔,根據實際狀況略做修改。

原文地址:https://blog.yurunsoft.com/a/120.html

相關文章
相關標籤/搜索