a、b、c、d四个txt,比较bcd这三个txt有多少是在a中,这4个文件大约250M.

  1. 规则如下:

    clipboard.png

自己测试过,设置了这两个ini_set('memory_limit', '-1');set_time_limit(0);,然后运行等了很久直接报500错误,求大神帮助!!!

阅读 2.4k
3 个回答

数据很多。估计数据库的话容易死。单纯比对的话 先写哥脚本把数据存到redis里。a表的缓存key 是a.0 a.1 a.2 什么的,b.000000036什么的 后两个规则保持一直。导入之后 确定 a的数据总条数

写一个for循环

$redis= new Redis();
$Acount = 100000; //a的总数
$num  = 1;
$chkary = [1,2,3,4,5,6,7,8,9];//判断用的数组
for ($i=0;$i<=$Acount;$i++){
    $data = $redis->get('a.' . $i);
   if( $redis->exists('b.'.$data)){
       //存在 code
   }
   $num++;
   if(in_array(($Acount/$num),$chkary)){
       sleep(1); //防止卡死
   }
}

可以写个脚本把四个文本的内容都缓存到Redis的4个集合里面,然后求交集,这样速度挺快的,不知道允不允许这样做?

新手上路,请多包涵

500错误是内存不够了吧,可以执行若干行就释放一下无用内存

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题