php多进程结合Linux利器split命令实现把大文件分批高效处理
有时候会遇到这样的需求,比如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命令实现把大文件分批高效处理相关推荐
- linux dd 截文件,Linux使用dd命令快速生成大文件(转)
dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...
- Linux dd命令截取文件,linux使用dd命令快速生成大文件
dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...
- linux命令dd创建虚拟硬盘,每日一题.PYTHON如何模拟LINUX的dd命令快速创建大文件?...
原文数据: 无 具体要求: 1. 模拟Linux的dd命令快速创建大文件 代码实现: # -*- coding: utf-8 -*- """ # # Authors: l ...
- Linux使用dd命令快速生成大文件
dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/ ...
- Linux使用split命令切割大型日志文件 保留文件结尾删除前面的内容
这是一个apache日志目录,可以看到access_log和error_log占用空间过大 我们使用 split -b 10G access_log 命令来切割它提示如下 split: 10G: in ...
- 4G内存怎么读取5G数据(python中的生成器、Linux的split命令)
1.使用python的生成器,一小段一小段数据读取 生成器:具有yield的函数就是生成器,是一个可以返回迭代器的函数 迭代器:知道遍历位置的对象,有iter()和next()方法 代码举例: def ...
- Linux 下从命令行打开pdf文件和html文件的命令
Linux 下从命令行打开pdf文件和html文件的命令 [日期:2012-06-18] 来源:Linux社区 作者:hipercomer [字体:大 中 小] 如果你经常工作在Linux终端下,某个 ...
- 非命令行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 ...
- Linux下用命令行彻底删除文件
一.Linux下用命令行彻底删除文件 Linux下一般会使用删除键或者rm命令.将文件扔到垃圾箱.但是,这些方法并没把文件从我们的电脑里彻底删除,只是把文件隐藏起来,让用户看不见而已. 1. shre ...
- Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置
Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置 grep [选项]... PATTERN [FILE]... grep -C N,(N代表一个整数)是搜索关键字出现位置,并且 ...
最新文章
- php使用redis的GEO地理信息类型
- 怎样高效阅读一篇文献?
- 《数学之美》第15章 矩阵运算和文本处理中的两个分类问题
- [toolchains]-ARM ToolChains介绍
- 多项式求和x+(x^2)/2!+(x^3)/3!+...
- mysql数据库相互备份_MySQL的本地备份和双机相互备份脚本
- 硬核干货,老曹解密“语音交互”背后的黑科技!
- c++编程规范101条规则
- 计算机有没有开启ntp服务器,让你的Windows电脑成为一台NTP校时服务器
- 丢失所有凭据后如何重新连接到SQL Server实例
- win10远程桌面配置
- IE中cookie问题,带下划线的前置域名会不给设cookie,谷歌和火狐浏览器则不受影响...
- collect2: error: ld returned 1 exit status(解决方案大总结)
- 如果自己配电脑电源额定瓦数过高会有什么坏处吗?
- java基础--名词解释汇总
- 人工蜂群算法求解TSP问题
- html下拉刷新原理,科技常识:移动端下拉刷新头实现原理及代码实现
- YOLOX部署优化训练
- 数据收集-数据收集软件-数据收集工具免费
- 基于AHP与CRITIC的组合赋权方法
热门文章
- idea 新建的java项目没发run_IntelliJ IDEA 如何创建一个普通的java项目,及创建java文件并运行...
- python月份字符串_python实现字符串和日期相互转换的方法
- 容器技术Docker K8s 40 Serverless Kubernetes(ASK)详解-阿里云弹性容器实例ECI产品概述
- 算法:在有序的链表中删除掉所有重复的数据(包括重复本身的节点)Remove Duplicates from Sorted List II
- php文件显示代码行数,php统计文件中的代码行数
- Matlab题目及答案,Matlab考试试题库+答案解析.doc
- 2021-09-07Hadoop运行模式:
- 推荐系统专利:一种信息推荐系统及方法
- 457.环形数组循环
- gradientDescent----吴恩达机器学习作业