您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php排序1亿个号码

2024/6/20 9:54:18发布31次查看
拆开分成几千份进行排序再合并。
首先先创建一个1亿个qq号的txt。
php code?
<?php
// 创建一亿个qq号的txt (大约需85~100秒)
set_time_limit(0);
$fn = 'qq.txt';
$fp = fopen($fn, 'w');
$st = microtime(true);
$l = range(0,10000);
shuffle($l);
foreach ($l as $k=>$v)
{
    $arr = range($v*10000+10000,10000*($v+1)+9999);
    shuffle($arr);
    fputs($fp,implode(\n, $arr).\n);
    unset($arr);
}
echo  microtime(true)-$st;
?>
稍等一两分钟1亿个随机qq创建完成了。
qq号码范围为>10000。文件大小大概有840mb。
下面就进行分类划分成几千份文件。
以qq号码长度为文件夹,qq号码前3位为文件名。
php code?
<?php
// 长度号码分类 (大约需360~400秒)
set_time_limit(0);
$st = microtime(true);
if(!is_dir('qq_no')) mkdir('qq_no');
$file = fopen('qq.txt', 'r');
$i=0;
$end_s = '';
while(!feof($file))
{
$g = 1042*1024;
fseek($file,$g*$i);
$s = fread($file, $g);
$end = strrpos($s, "\n");
$arr_s = $end_s.substr($s, 0, $end);
$end_s = substr($s, $end);
$arr = explode("\n", $arr_s);
foreach ($arr as $k=>$v)
    {
        if($v!='')
        {
            $tag = $v[0]$v[1]$v[2];
            $text_arr[strlen($v)][$tag][] = $v;
        }
    }
foreach ($text_arr as $k=>$v)
    {
        $n_dir = 'qq_no/'.$k;
        if (!is_dir($n_dir)) mkdir($n_dir);
        foreach ($v as $tag=>$val)
        {
            $n_tf = fopen($n_dir.'/'.$tag.'.txt', 'a+');
            fputs($n_tf,implode(\n,$val).\n);
        }       
    }
    unset($text_arr); 
    ++$i;
}
echo  microtime(true)-$st;
?>
最后就要每个文件进行排序合并数据了。
php code?
<?php
// 排序完成拉 (800~920秒)
set_time_limit(0);
$st = microtime(true);
$qq_done = fopen('qq_done.txt', 'a+');
$root = 'qq_no';
$dir_array = scandir($root);
foreach ($dir_array as $key=>$val)
{
    if ($val != '.' && $val != '..')
        $dirs[$val] =  scandir($root.'/'.$val);
}
foreach ($dirs as $key=>$val)
{
    foreach ($val as $v)
    {
        if ($v != '.' && $v != '..')
        {
            $file = $root. '/' . $key . '/'. $v;
            $c = file_get_contents($file);
            $arr = explode(\n, $c);
            sort($arr);
            fputs($qq_done, implode(\n,$arr));
            unlink($file);
        }
    }
    rmdir($root. '/' . $key);
}
rmdir($root);
echo  microtime(true)-$st;
?>
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product