PHP中实现大文件去重的方法是什么
Admin 2022-07-07 群英技术资讯 736 次浏览
今天就跟大家聊聊有关“PHP中实现大文件去重的方法是什么”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“PHP中实现大文件去重的方法是什么”文章能对大家有帮助。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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章给大家分享的是关于laravel框架的组件化开发实现方法的内容,介绍了组件化开发实现的步骤和代码,文本示例具有一定的借鉴价值,对于组件化开不清楚的朋友可以参考学习,下面就跟随小编一起学习吧。
这篇文章主要给大家分享laravel数据库迁移中创建和修改表的操作,具有一定的借鉴价值,感兴趣的朋友可以参考学习,下面我们一起来学习一下吧。
今天小编就为大家分享一篇关于PHP微信发送推送消息乱码的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
(PHP4,PHP5)PHP提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分...
php-fpm是什么?php-fpm全名是PHP FastCGI进程管理器,是PHP的一个进程管理器。php下面的众多work进程皆有php-fpm进程管理器管理。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008