1. 程式人生 > 其它 >php xattr操作檔案擴充套件屬性後續

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

我們讓消費者每1ms休息一下,避免CPU佔用過高。

發現最終寫入資料40萬條,其投遞效率是很高的!

這只是一個非常簡單的骨架模型,我們可以用它做更多的擴充套件,本案例執行步驟如下:

先執行 php 消費者.php

再執行 php 生產者.php