资讯专栏INFORMATION COLUMN

PHP 的 Phar 包原来性能这么强!

pakolagij / 3118人阅读

摘要:想到还有包这个东西,我试图用来解决这个问题。功夫不负有心人,我终于为框架实现了打包的兼容和支持,测试结果表明使用进行文件枚举读取,无论是在本地硬盘还是等网络文件共享挂载,性能都比零散的文件性能更强。

之前有在群里看到人说,有一些 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/P...

有兴趣的朋友可以拉下来,自己跑一下试试。

想要启动 Phar 文件打包功能,首先要在 php.ini 中配置 phar.readonly = Off

Phar 打包代码主要如下:

stopBuffering();
$phar->buildFromDirectory(__DIR__ . "/src");

实际应用情况复杂,可以参考 php 官方文档,根据实际情况略作修改。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29383.html

相关文章

  • 使用phar上线你代码

    摘要:在我前一阵子写的一篇文章新版重构之系统架构中,很多人对其中提到的利用上线代码比较感兴趣,我就在这边跟大家分享下我目前的做法。现有代码需要做何处理吗如果你的代码结构比较科学比如采用大部分框架的推荐结构,那么一行都不需要改变。 在我前一阵子写的一篇文章《新版 SegmentFault 重构之系统架构》中,很多人对其中提到的利用phar上线代码比较感兴趣,我就在这边跟大家分享下我目前的做法。...

    MangoGoing 评论0 收藏0
  • CentOS7.0下编译安装PHP 5.6.21

    摘要:写在前面的话本文章紧接上一篇下编译安装。来完成常用的开发集成环境的基本搭建,本篇来记录的安装,还是那些步骤。 写在前面的话 本文章紧接上一篇CentOS7.0下编译安装Nginx 1.10.0。来完成常用的web开发集成环境lnmp的基本搭建,本篇来记录php的安装,还是那些步骤。 安装编译工具、依赖包及下载源码包 解压编译 安装 启动 编译安装 下载源码 由于在上篇文章中编译工具...

    Me_Kun 评论0 收藏0
  • CentOS7.0下编译安装PHP 5.6.21

    摘要:写在前面的话本文章紧接上一篇下编译安装。来完成常用的开发集成环境的基本搭建,本篇来记录的安装,还是那些步骤。 写在前面的话 本文章紧接上一篇CentOS7.0下编译安装Nginx 1.10.0。来完成常用的web开发集成环境lnmp的基本搭建,本篇来记录php的安装,还是那些步骤。 安装编译工具、依赖包及下载源码包 解压编译 安装 启动 编译安装 下载源码 由于在上篇文章中编译工具...

    FullStackDeveloper 评论0 收藏0

发表评论

0条评论

pakolagij

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<