详解PHP多个进程配合redis的有序集合实现大文件去重

 更新时间:2019年03月06日 14:56:05   作者:陶士涵的菜地  
这篇文章主要介绍了PHP多个进程配合redis的有序集合实现大文件去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习 吧

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

以上所述是小编给大家介绍的PHP多个进程配合redis的有序集合实现大文件去重详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • php异步:在php中使用fsockopen curl实现类似异步处理的功能方法

    php异步:在php中使用fsockopen curl实现类似异步处理的功能方法

    下面小编就为大家带来一篇php异步:在php中使用fsockopen curl实现类似异步处理的功能方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • PHP验证类的封装与使用方法详解

    PHP验证类的封装与使用方法详解

    这篇文章主要介绍了PHP验证类的封装与使用方法,涉及php针对邮箱、手机号、字符串相关验证操作封装与使用技巧,需要的朋友可以参考下
    2019-01-01
  • 用phpmyadmin更改mysql5.0登录密码

    用phpmyadmin更改mysql5.0登录密码

    mysql5.0更改登录密码完成架站完成大斌的BLOG也一并处理今天忙了整整一天,做了一些无聊并且重复的体力劳动,几乎没有学到什么东西,却浪费了一天时间。可惜,可悲,可叹。不过总算把算服务器的MYSQL登录密码和PHPMYADMIN的远程访问方式改好了。MYSQL自4.1起就更改了加密方式,讲原先16位的加密改成40位,把我害苦了,怎么都连接不上。查遍资料今天总算搞定了通过PHPMYADMIN更改MYSQL密码,个人觉得简单实用
    2008-03-03
  • PHP中 empty() 和 isset() 的区别介绍

    PHP中 empty() 和 isset() 的区别介绍

    作为PHP中经常用来判断变量是否为空的函数:empty()和isset() ,二者其实在很多方面还是存在区别的,本文将为大家详细介绍一下他们的区别之处,需要的朋友可以了解一下
    2021-12-12
  • php session的应用详细介绍

    php session的应用详细介绍

    这篇文章主要介绍了php session的应用详细介绍的相关资料,需要的朋友可以参考下
    2017-03-03
  • PHP Trait代码复用类与多继承实现方法详解

    PHP Trait代码复用类与多继承实现方法详解

    这篇文章主要介绍了PHP Trait代码复用类与多继承实现方法,结合实例形式详细分析了Trait代码复用类的原理并结合具体实例形式分析了php基于Trait多继承的相关实现与使用技巧,需要的朋友可以参考下
    2019-06-06
  • PHP引擎php.ini参数优化深入讲解

    PHP引擎php.ini参数优化深入讲解

    这篇文章主要介绍了PHP引擎php.ini参数优化深入讲解,php.ini设置可以提高php的响应速度,有感兴趣的同学可以学习下
    2021-03-03
  • PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)

    PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)

    这篇文章主要介绍了PHP实现仿百度文库,豆丁在线文档效果,可实现word,excel,ppt转flash显示的功能,结合实例形式分析了常见的解决方案与CentOS环境下的实现技巧,需要的朋友可以参考下
    2016-03-03
  • php循环检测目录是否存在并创建(循环创建目录)

    php循环检测目录是否存在并创建(循环创建目录)

    php循环检测目录是否存在并创建,需要的朋友可以参考下。
    2011-01-01
  • PHP array_multisort()函数的使用札记

    PHP array_multisort()函数的使用札记

    array_multisort 对多个数组或多维数组进行排序的函数,需要的朋友可以参考下。
    2011-07-07

最新评论