PHP中实现大文件去重的方法是什么
Admin 2022-07-07 群英技术资讯 664 次浏览
1.对一个大文件比如我的文件为
-rw-r--r-- 1 ubuntu ubuntu 9.1G Mar 1 17:53 2018-12-awk-uniq.txt
2.使用split命令切割成10个小文件
split -b 1000m 2018-12-awk-uniq.txt -b 按照字节切割 , 支持单位m和k
3.使用10个php进程读取文件 , 插入redis的有序集合结构中 , 重复的是插不进去的 ,因此可以起到去重的作用
<?php $file=$argv[1]; //守护进程 umask(0); //把文件掩码清0 if (pcntl_fork() != 0){ //是父进程,父进程退出 exit(); } posix_setsid();//设置新会话组长,脱离终端 if (pcntl_fork() != 0){ //是第一子进程,结束第一子进程 exit(); } $start=memory_get_usage(); $redis=new Redis(); $redis->connect('127.0.0.1', 6379); $handle = fopen("./{$file}", 'rb'); while (feof($handle)===false) { $line=fgets($handle); $email=str_replace("\n","",$line); $redis->zAdd('emails', 1, $email); }
4. redis中查看获取的数据
zcard emails 获取元素个数
取一定范围的元素 , 比如从100000开始 到 100100结束
zrange emails 100000 100100 WITHSCORES
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文实例讲述了PHP过滤器 filter_has_var() 函数用法。下文有详细的介绍,小编觉得挺实用的,对大家学习或工作或许有帮助,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
学习PHP7就从最基本的开始,如何安装,如何卸载,本栏目将详细讲解,有需要的朋友可以看看,了解了解,一起学习讨论。
这篇文章给大家分享的是有关Laravel项目迁移到新的开发环境的内容,对于刚接触Laravel的新手来说,可能对此不是很清楚,因此分享给大家做个参考,感兴趣的朋友就继续往下看吧。
今天小编就为大家分享一篇laravel excel 上传文件保存到本地服务器功能,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
<?php//获取水印图片$logo=newImagick("hacktea8.png");$logo->setImageResolution(0.01,0.03);//创建一个Imagick对象,同时获取要处理的源图$im=newImagick("www/hacktea8/com.jpg"); //获取源图片宽和高$srcWH=$im->getImageGe
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008