拆開分成幾千份進行排序再合併。
先建立一個1億個QQ號的txt。
PHP code?
limit(0);
$fn = 'qq.txt';$fp = fopen($fn, 'w'); $st = microtime(true); $st = microtime(true); ;shuffle($l);foreach ($l as $k=>$v){ $arr = ); shuffle($arr); fputs($fp,implode("n", $arr)."n");
microtime( true)-$st;
?>
隨機一分鐘創建了1億分鐘創建了十億個數。 QQ號碼範圍為>10000。文件大小大概有840MB。 下面就進行分類分割成數千份文件。
以QQ號碼長度為資料夾,QQ號碼前3位為檔案名稱。
PHP code?
// 長度號碼
if(!is_dir('qq_no')) mkdir('qq_no');
$file = fopen('qq. =0;$end_s = '';
while(!feof($file))
{
$ = 1042*1024; $s = fread($file, $g);
$end = strrpos($s, "n");
$end_s = substr($s, $end); $arr = explode("n", if( $v!='') { $tag = arr[strlen($v)][$tag][] = $v; } } $n_dir = 'qq_no/'.$k; if (!is_dir($ n_dir)) mkdir($n_dir);foreach ($v as $tag=>$val)🎠 _tf = fopen($n_dir.'/'.$tag.'.txt', 'a+ ');
fputs($n_tf,implode("n",$val)."n");
unset($text_arr);
++$i;
}
echo microtime(true)-$st;
?>
最後就要每個檔案進行排序合併資料了。
PHP code?
.
set_time_limit(0);
$st = microtime (true);
$qq_done = fopen('qq_done.txt', 'a+');
$at foreach ($dir_array as $key=>$val)
{
if ($val != '.' && $val . $root. '/'.$val);}
foreach ($dirs as $key=>$val)
{
if ($v != '.' && $v != ) $file = $root. '/'。 $鍵。 '/'。 $v;
$c = file_get_contents($file);
排序($arr);
fputs($qq_done, 內爆(「n」 , $arr));
取消連結($file);
key);
}
rmdir($root);
迴聲microtime(true)-$st;
? >