`
wbj0110
  • 浏览: 1599176 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

php排序1亿个号码

    博客分类:
  • php
阅读更多

拆开分成几千份进行排序再合并。


首先先创建一个1亿个QQ号的txt。

PHP code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?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?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?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;
 
?>
分享到:
评论

相关推荐

    [PHP整站程序]亿网家教网站管理程序 v2.0_ywjj.zip

    【PHP整站程序】亿网家教网站管理程序 v2.0_ywjj.zip 是一个基于PHP语言开发的完整网站管理平台,专为家教服务领域设计。这个程序旨在提供全面、高效且易于操作的解决方案,帮助教育机构或个人教师进行在线家教服务...

    PHP 全文检索引擎 Sphinx 介绍

    3. **高可用性**:单台服务器上,Sphinx能支持高达100GB的文本和1亿条文档,确保了系统在大规模数据下的稳定运行。 4. **分布式搜索**:Sphinx支持分布式搜索,可以将搜索负载分散到多个节点,提高整体系统的处理...

    SSDB入门基础.docx

    SSDB 是一个高性能的 NoSQL 数据库服务器,由 C++ 开发,专为处理大量数据设计,特别是亿级级别的列表和排序表。作为 Redis 的替代品,SSDB 提供了类似 Redis 的 API,并且支持多种编程语言的客户端,如 PHP、C++、...

    PHP利用二叉堆实现TopK-算法的方法详解

    传统的排序方法在数据量较小的时候是可行的,但在数据量达到亿级时,不仅消耗内存巨大,而且效率低下。因此,本文将介绍使用PHP语言实现二叉堆算法来高效解决Top K问题的方法。 首先,我们需要了解二叉堆的概念。...

    coreseek安装

    1. **高性能**:能够处理数十亿条记录和TB级别的数据,每秒处理数千次查询,具有出色的索引建立速度和搜索性能。 2. **易于集成**:支持SQL和XML数据源,可以通过SphinxAPI、SphinxQL或SphinxSE接口进行搜索。 3. **...

    功能超级强悍的文本编辑器 PilotEdit 14.3.0 + x64 中文多语免费版.zip

    支持文本编辑,比较,FTP编辑,FTP上传下载,加密,十六进制编辑,列模式,回行显示,正则表达式,多行查找和替换,代码折叠,关键字高亮显示,编辑400GB的大文件,比较100GB的大文件,对超过1G的大文件排序,删除...

    Sphinx使用手册

    1. **高性能**: 单一索引最多可支持1亿条记录,对于含有1千万条记录的索引,查询时间可达到毫秒级。 2. **快速索引**: 创建100万条记录的索引仅需3~4分钟;创建1000万条记录的索引可在50分钟内完成;增量索引更新...

    2021-2022计算机二级等级考试试题及答案No.13257.docx

    12. 20GB的硬盘容量表示约200亿个字节(1GB=1024MB=1024*1024KB=1024*1024*1024B)。 13. 关系数据库中的记录顺序是可以任意颠倒的,不影响数据之间的关系。 14. 使用`STORE`命令后,要显示特定字符串,可以使用`...

    MySQL 教程介绍.docx

    1. 功能强大:MySQL 中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点。MySQL5 支持事务、视图、...

    多多V7.3_UTF8_20111221免授权无限制商业正式版

    多多淘宝客V7.3免授权无限制商业正式版 ...13、修复获取亿起发订单无法自动跳转的问题 14、修复后台查杀木马 addadmin/list.php提示木马的问题 三、优化 1、优化搜索的关键词过滤。 2、优化淘宝客收录。

    archive_ Sphinx全文检索引擎 for Mac v3.3.1 [江西新余电信].zip.zip

    1. 高性能:Sphinx能够快速地处理大量数据,支持实时索引和近乎实时的搜索。它的设计目标是提供毫秒级的查询响应速度,即使在包含数亿条记录的大型数据库上也能实现。 2. 高精度:Sphinx提供了布尔、短语、近似和...

    2021-2022计算机二级等级考试试题及答案No.14387.docx

    6. 硬盘容量:20GB的硬盘表示大约20亿个字节(每个字节由8个二进制位组成,即20*1024*1024*1024 bytes)。 7. 计算机病毒:计算机病毒是一种恶意软件,通常设计为自我复制并可能破坏系统或数据。 8. 用户创建工具...

    阿里云开放搜索laravelSDK

    2. 高性能检索:支持亿级数据量的毫秒级检索,提供多种排序方式,如相关度、销量等。 3. 智能纠错:内置智能纠错功能,可以自动纠正用户输入的错误关键词。 4. 丰富的查询语法:支持布尔查询、短语查询、模糊查询等...

    archive_ Sphinx全文检索引擎 for Windows v3.3.1 [江西新余电信].zip.zip

    4. **丰富的排序和过滤选项**:用户可以根据多个字段进行排序,还可以设置过滤条件,如按时间、评分等进行筛选。 5. **拼音和同义词支持**:对于中文环境,Sphinx可以支持拼音搜索和同义词库,提升用户体验。 6. **...

    2021-2022计算机二级等级考试试题及答案No.9168.docx

    4. 20GB的硬盘容量表示大约200亿个字节,这里的换算关系是1GB = 1,000,000,000字节。 5. 程序流程图(PFD)中的箭头表示控制流,即程序执行的顺序或分支。 6. `trim()` 函数用于去除字符串两侧的空白字符,`Len()`...

    SSDB详细解说

    SSDB是一个由C/C++编写的高性能NoSQL数据库,专为处理大量集合数据而设计,支持zset(排序集合)、map(哈希)、kv(键值对)和list(列表)等丰富的数据结构。其目标是作为Redis的替代品或补充,特别是在面对十亿...

    WellCMS-PHP

    分布式服务器设计,每张表都可创建单独的DB服务器群和CACHE服务器(群),单表可承受高达亿级以上的数据,方便部署和维护,是一个二次开发非常好的基石。 WellCMS更新日志: beta2版修复了已知错误: 1.修复后台灌水后...

Global site tag (gtag.js) - Google Analytics