hail/optimize

使用内存扩展来减少文件系统IO

v0.10.0 2021-08-05 11:17 UTC

This package is auto-updated.

Last update: 2024-09-06 14:51:28 UTC


README

使用内存扩展缓存

  • 文件中的数据存储,减少文件系统IO
  • 复杂操作后的数据

环境变量

  • HAIL_OPTIMIZE_ADAPTER
    • 自动(默认)
      • 检查顺序:yac, apcu, wincache, redis
    • yac
      • yac 扩展必须已安装
    • apcu
      • apcu 扩展必须已安装
    • wincache
      • wincache 扩展必须已安装
    • redis
      • phpredis 扩展必须已安装
      • HAIL_OPTIMIZE_REDIS 必须定义
    • 内存
      • 使用PHP数组保存数据
      • 禁用
  • HAIL_OPTIMIZE_DELAY
    • 检查缓存文件是否变化的时间间隔(秒)
    • 0 表示每次获取数据时都检查
    • 小于0 表示永不检查(不推荐)
    • 如未定义,默认值为5
  • HAIL_OPTIMIZE_REDIS
    • redis配置
    • unix:///var/run/redis/redis.sock?auth=password&select=0
    • tcp://127.0.0.1:6379?auth=password&select=0

示例

use Hail\Optimize\OptimizeTrait;

class Example
{
    use OptimizeTrait;
    
    private string $folder;
    
    public function __construct(string $folder)
    {
        $this->folder = $folder;
    }
    
    public function dataReader(string $file): array
    {
        return unserialize(file_get_contents($file));
    }
    
    public function get(string $name): array
    {
        $file = $this->folder . DIRECTORY_SEPARATOR . $name . '.json';
        return $this->optimize()->load($file);
    }
    
    public function getSerializeData($name): array
    {
        $file = $this->folder . DIRECTORY_SEPARATOR . $name . '.data';

        return $this->optimize()->load($file, [$this, 'dataReader']);
    }
}