zoukankan      html  css  js  c++  java
  • php xattr操作文件扩展属性后续

    由于之前看了xattr的写入效率,这里简单的实现一下生产者消费者模型的高速写入。

    生产者(让他创建40万条数据)

    <?php
    // 生产者 不断的生产大量数据 但是总会有停止的时候(本业务功能结束)
    for ($i=100000; $i < 500000; $i++) {
      $file = "./nodes/{$i}.txt";
      touch($file);
      xattr_set($file, 'dataCount', $i);
    }

    消费者(让他消费这生成的数据,存储到一个综合的文件里面。)

    <?php
    // 消费者 不断的读取生产的数据进行处理或者数据落地 没有停止的时候(为了避免与生产者有并发读写 自己会按时休息一会儿)
    
    is_dir("./nodes") || mkdir("./nodes");
    
    while (1) {
      $result = [];
      $list = glob("./nodes/*.txt");
      if ($list) {
        $list = array_slice($list, 0, 10000);
        foreach ($list as $file) {
          $result[] = xattr_get($file, 'dataCount');
          unlink($file);
        }
        file_put_contents('data.log',"
    " . implode("
    ", $result), FILE_APPEND);
      }
      usleep(1000);//休息1ms
    }

    我们让消费者每1ms休息一下,避免CPU占用过高。

    发现最终写入数据40万条,其投递效率是很高的!

    这只是一个非常简单的骨架模型,我们可以用它做更多的扩展,本案例执行步骤如下:

    先运行  php 消费者.php

    再运行  php 生产者.php

  • 相关阅读:
    Python-枚举
    Python-函数
    Python-装饰器(语法糖)上下五千年和前世今生
    Python-全局函数(内置方法、内置函数)
    Python-时间模块-time
    Python-随机模块-random
    Python-维护排序好的序列模块-bisect
    需求推动技术的产生
    RBF神经网络
    聚类算法的衡量指标
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/15029569.html
Copyright © 2011-2022 走看看