有时候会遇到这样的需求,比如log日志文件,这个文件很大,甚至上百M,需要把所有的日志拿来做统计,这时候我们如果用单进程来处理,效率会很慢。
如果我们想要快速完成这项需求,我们可以利用Linux的一个利器split,先根据这个文件的总大小、总行数,来按照一个比例来分割,在根据分割的文件数量,fork出一定比例合适的子进程数量分批处理,那么效率可想而知。

linux的split可以看这篇文章来学习测试下Centos文件切割利器_split命令及cat命令合并文件

//shell
# split -l 1000 -d test.txt new_test.txt --verbose   //比如这里切割了10份           

<?php
//php代码
//根据切割数量,fork相匹配的子进程数量
$count = 10;
for ($i = 0; $i < $count; ++$i ) {$pid = pcntl_fork();    //创建子进程//父进程和子进程都会执行下面代码if ($pid == -1) {//错误处理:创建子进程失败时返回-1.die('could not fork');} else if ($pid) {//父进程会得到子进程号,所以这里是父进程执行的逻辑//如果不需要阻塞进程,而又想得到子进程的退出状态,则可以注释掉pcntl_wait($status)语句,或写成:pcntl_wait($status,WNOHANG); //等待子进程中断,防止子进程成为僵尸进程。} else {// 业务处理 beginfunc("new_text.txt0".$i);// 业务处理 endexit(0) ;}
}

转载于:https://www.cnblogs.com/wt645631686/p/8418415.html

php多进程结合Linux利器split命令实现把大文件分批高效处理相关推荐

  1. linux dd 截文件,Linux使用dd命令快速生成大文件(转)

    dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...

  2. Linux dd命令截取文件,linux使用dd命令快速生成大文件

    dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...

  3. linux命令dd创建虚拟硬盘,每日一题.PYTHON如何模拟LINUX的dd命令快速创建大文件?...

    原文数据: 无 具体要求: 1. 模拟Linux的dd命令快速创建大文件 代码实现: # -*- coding: utf-8 -*- """ # # Authors: l ...

  4. Linux使用dd命令快速生成大文件

    dd命令可以轻易实现创建指定大小的文件,如   dd if=/dev/zero of=test bs=1M count=1000   会生成一个1000M的test文件,文件内容为全0(因从/dev/ ...

  5. Linux使用split命令切割大型日志文件 保留文件结尾删除前面的内容

    这是一个apache日志目录,可以看到access_log和error_log占用空间过大 我们使用 split -b 10G access_log 命令来切割它提示如下 split: 10G: in ...

  6. 4G内存怎么读取5G数据(python中的生成器、Linux的split命令)

    1.使用python的生成器,一小段一小段数据读取 生成器:具有yield的函数就是生成器,是一个可以返回迭代器的函数 迭代器:知道遍历位置的对象,有iter()和next()方法 代码举例: def ...

  7. Linux 下从命令行打开pdf文件和html文件的命令

    Linux 下从命令行打开pdf文件和html文件的命令 [日期:2012-06-18] 来源:Linux社区 作者:hipercomer [字体:大 中 小] 如果你经常工作在Linux终端下,某个 ...

  8. 非命令行linux安装zip,如何在Ubuntu 18.04 Bionic Beaver Linux上使用命令行从ZIP文件安装Gnome Shell Extensions...

    目的 目的是在Ubuntu 18.04 Bionic Beaver Linux上使用命令行从ZIP文件安装Gnome Shell Extensions.使用命令行从ZIP文件安装Gnome Shell ...

  9. Linux下用命令行彻底删除文件

    一.Linux下用命令行彻底删除文件 Linux下一般会使用删除键或者rm命令.将文件扔到垃圾箱.但是,这些方法并没把文件从我们的电脑里彻底删除,只是把文件隐藏起来,让用户看不见而已. 1. shre ...

  10. Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置

    Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置 grep [选项]... PATTERN [FILE]... grep -C N,(N代表一个整数)是搜索关键字出现位置,并且 ...

最新文章

  1. php使用redis的GEO地理信息类型
  2. 怎样高效阅读一篇文献?
  3. 《数学之美》第15章 矩阵运算和文本处理中的两个分类问题
  4. [toolchains]-ARM ToolChains介绍
  5. 多项式求和x+(x^2)/2!+(x^3)/3!+...
  6. mysql数据库相互备份_MySQL的本地备份和双机相互备份脚本
  7. 硬核干货,老曹解密“语音交互”背后的黑科技!
  8. c++编程规范101条规则
  9. 计算机有没有开启ntp服务器,让你的Windows电脑成为一台NTP校时服务器
  10. 丢失所有凭据后如何重新连接到SQL Server实例
  11. win10远程桌面配置
  12. IE中cookie问题,带下划线的前置域名会不给设cookie,谷歌和火狐浏览器则不受影响...
  13. collect2: error: ld returned 1 exit status(解决方案大总结)
  14. 如果自己配电脑电源额定瓦数过高会有什么坏处吗?
  15. java基础--名词解释汇总
  16. 人工蜂群算法求解TSP问题
  17. html下拉刷新原理,科技常识:移动端下拉刷新头实现原理及代码实现
  18. YOLOX部署优化训练
  19. 数据收集-数据收集软件-数据收集工具免费
  20. 基于AHP与CRITIC的组合赋权方法

热门文章

  1. idea 新建的java项目没发run_IntelliJ IDEA 如何创建一个普通的java项目,及创建java文件并运行...
  2. python月份字符串_python实现字符串和日期相互转换的方法
  3. 容器技术Docker K8s 40 Serverless Kubernetes(ASK)详解-阿里云弹性容器实例ECI产品概述
  4. 算法:在有序的链表中删除掉所有重复的数据(包括重复本身的节点)Remove Duplicates from Sorted List II
  5. php文件显示代码行数,php统计文件中的代码行数
  6. Matlab题目及答案,Matlab考试试题库+答案解析.doc
  7. 2021-09-07Hadoop运行模式:
  8. 推荐系统专利:一种信息推荐系统及方法
  9. 457.环形数组循环
  10. gradientDescent----吴恩达机器学习作业