搜尋

首頁  >  問答  >  主體

php - a、b、c、d四個txt,比較bcd這三個txt有多少是在a中,這4個檔案大約250M.

  1. 規則如下:

自己測試過,設定了這兩個ini_set('memory_limit', '-1');set_time_limit(0);,然後運行等了很久直接報500錯誤,求大神幫助!!!

怪我咯怪我咯2828 天前465

全部回覆(3)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-16 13:09:52

    數據很多。估計資料庫的話容易死。單純比對的話 先寫哥腳本把資料存到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); //防止卡死
       }
    }

    回覆
    0
  • 漂亮男人

    漂亮男人2017-05-16 13:09:52

    可以寫個腳本把四個文字的內容都快取到Redis的4個集合裡面,然後求交集,這樣速度挺快的,不知道允不允許這樣做?

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:09:52

    500錯誤是記憶體不夠了吧,可以執行若干行就釋放一下無用記憶體

    回覆
    0
  • 取消回覆