以前有在群里看到人说,有一些 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 官方文档,根据实际状况略做修改。