由于之前看了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',"\r\n" . implode("\r\n", $result), FILE_APPEND);
}
usleep(1000);//休息1ms
}

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

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

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

先运行  php 消费者.php

再运行  php 生产者.php

php xattr操作文件扩展属性后续的更多相关文章

  1. PHP中DirectIO直操作文件扩展的使用

    关于 PHP 的文件操作,我们也将是通过一系列的文章来进行学习.今天我们先学习的是一个很少人使用过,甚至很多人根本不知道的扩展,它与我们日常的文件操作有些许的不同.不过这些差别并不是我们肉眼所能直观看 ...

  2. 在bash shell中使用getfattr查看文件扩展属性

    getfattr用法 用于获取文件扩展属性,返回一系列键值对,参考Linux Man Page. 常用OPTIONS -n name, --name=name Dump the value of th ...

  3. day9:文件相关操作&文件扩展模式&文件相关函数

    文件的操作 # 文件的写入 # 1.打开文件 fp = open("ceshi1.txt",mode="w",encoding="utf-8" ...

  4. 第8章 File I/O,File类操作文件的属性

    1.文件 1.1.什么是文件? 答:文件可认为是相关记录或放在一起的数据的集合 1.2.文件- -般存储在哪里? 答: 磁盘,硬盘,文件夹 1.3.JAVA程序如何访向文件属性? JAVA API:i ...

  5. lsattr 查看文件扩展属性

    1. 命令功能 lsattr查看 是否有chattr设置的权限. 2. 使用范例 [root@localhost data]# lsattr resolv.conf -----a-------e- r ...

  6. 在PHP中操作文件的扩展属性

    在操作系统的文件中,还存在着一种我们可以自己定义的文件属性.这些属性不是保存在文件内容中,也不是直接可以通过 ls -al 所能看到的内容.它们可以将一个键值对信息永久得关联到文件上,一般现在的 Li ...

  7. FME中Cass扩展属性转Shp的方法

    问题:真受不了CAD中的注记,只能方便显示,难于数据交互.好在Cass把属性信息基本写在扩展属性中,但显示又成问题了.此事难两全!我们通过查看实体属性,需要把宗地界线的扩展属性提取出来.即组码为-3, ...

  8. linux中suid/sgid/sticky及扩展属性(attr)

    suid只适用于命令文件.(如/usr/bin/passwd) 当命令文件上有suid权限时,则操作用户的权限变成属主权限.命令文件上无suid权限则操作用户的权限不变. 查看suid权限: [roo ...

  9. 使用File类操作文件或目录的属性

    在学I/O流之前,我先总结一下使用File类操作文件或目录的属性. package com.File; import java.io.File; import java.io.IOException; ...

  10. Linux 文件系统扩展属性【转】

    转自:https://blog.csdn.net/ganggexiongqi/article/details/7661024 扩展属性(xattrs)提供了一个机制用来将<键/值>对永久地 ...

随机推荐

  1. docker context 介绍

    $ docker context ls NAME DESCRIPTION DOCKER ENDPOINT ERROR default Current DOCKER_HOST based configu ...

  2. 2024DASCTF

    DASCTF prese 一眼控制了平坦化,可以用d810梭一下 跟进一下main_crypto这个函数 主要是两部分,第一部分是生成一个256大小的数组,通过输入的长度和遍历生成的一个数组 第二部分 ...

  3. Windos操作系统下的Zookeeper安装图文教程

    凯哥已经准备好最新版本3.9.1且已经配置好了.既获取到配置好的. 获取到凯哥准备的安装后,只需要修改一下配置.将解压包解压后,找到conf文件,里面有个zoo.cfg配置文件.如下图: 下载后con ...

  4. GANF: 用于多时间序列异常检测的图增广归一化流《GRAPH-AUGMENTED NORMALIZING FLOWS FOR ANOMALY DETECTION OF MULTIPLE TIME SERIES》(异常检测、多时间序列、DAG、贝叶斯网络、归一化流)

    今天是2022年7月12日,差不多小半个月没看论文了,因为模型一直运行不起来+系统搭建的一塌糊涂,今天干脆摆烂,本咸鱼要去看新的论文了(逃避旧工作,bushi). 对了,我们放暑假了,可是我没放暑假. ...

  5. Java获取Object中Value的方法

    在Java中,获取对象(Object)中的值通常依赖于对象的类型以及我们希望访问的属性.由于Java是一种静态类型语言,直接从一个Object类型中访问属性是不可能的,因为Object是所有类的超类, ...

  6. Parquet.Net: 将 Apache Parquet 移植到 .NET

    Parquet.Net 是一个用于读取和写入 Apache Parquet 文件的纯 .NET 库,使用MIT协议开源,github仓库:https://github.com/aloneguid/pa ...

  7. C++ STL stack容器——栈

    stack容器 基本概念 stack是一种先进后出的数据结构,它只有一个出口,形式如下图所示.stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何地方可以存取stack的娶她 ...

  8. USB-A, Micro, lightning and USB-C

  9. 001 (Python+水论文合集)为什么录这个合集,这个合集会讲哪些内容?

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  10. 【Treatment-Rec 论文阅读】Data-driven Automatic Treatment Regimen Development and Recommendation

    Data-driven Automatic Treatment Regimen Development and Recommendation Authors: Leilei Sun, Chuanren ...