alekseykorzun / memfs-php
Requires
- php: >=5.3.0
- alekseykorzun/memcached-wrapper-php: 0.2.*@dev
This package is not auto-updated.
Last update: 2024-09-14 14:14:19 UTC
README
本包提供了一种将应用文件存储在Memcached池中的方法,通过在检索时使用eval()进行自动解析。
我是在和一位朋友开玩笑,说将文件存储在Memcached中比从磁盘包含它们要快,所以尽管在适当的环境下这个包肯定有用途,但请确保你明白你在做什么。
性能
首先让我们看看在MacBook Pro上的VirtualBox中运行的基准测试
Loaded 500 files using regular include() in 0.020308017730713 Loaded 500 files using MemFS in 0.15591597557068 Loaded 500 files using MemFS (10 files at the time) 0.018874883651733 Loaded 500 files using MemFS (250 files at the time) 0.015585899353027 Loaded 500 files using MemFS (500 files at the time) 0.016402959823608
请注意,所讨论的笔记本电脑配备了SSD驱动器。
如你所见,当直接一对一比较时,你可能会得到性能下降,但随着规模的扩大和请求10+文件时,你会看到大约0.00143313407秒的轻微速度提升。
不多,但这个基准测试并不科学,是在一个空机器上进行的,该机器配备了SSD驱动器,没有I/O负载。你的配置可能不同,如果你以0.0014 * 每秒请求来处理应用,你可能会在每10000个请求中节省14秒。
使用场景
- 在饱和或缓慢的I/O环境中托管基于PHP的应用程序的服务器。
- 定期更新逻辑的分布式应用程序可以通过更新内存池中的新代码(包括评估)来刷新。
- 需要按顺序加载和解析多个文件的应用程序。
Memcached
为了获得最佳结果,请确保缓存池托管在单独的服务器上,但与你的Web服务器共享LAN。
根据你的负载,服务器之间的连接必须大于100Mbps。
请确保使用最新版本守护进程的igBinary。
安装
如果你有自动加载器,只需更新命名空间,然后将文件放入框架库中。
对于没有这种配置的人,你可以访问 https://getcomposer.org.cn 在你的系统上安装composer。安装完成后,只需在分布的父目录中运行 composer install
来生成包含跨系统自动加载器的vendor/目录。
基准测试
你可以通过运行以下命令来基准测试并衡量这种优化可能为你带来的好处
php benchmark/run.php
请确保运行两次再读取结果,以便应用可以缓存文件
错误 & 反馈
欢迎通过电子邮件aleksey@webfoundation.net联系我