拆开分成几千份进行排序再合并。
首先先创建一个1亿个QQ号的txt。
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位为文件名。
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 ; ?> |
最后就要每个文件进行排序合并数据了。
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语言开发的完整网站管理平台,专为家教服务领域设计。这个程序旨在提供全面、高效且易于操作的解决方案,帮助教育机构或个人教师进行在线家教服务...
3. **高可用性**:单台服务器上,Sphinx能支持高达100GB的文本和1亿条文档,确保了系统在大规模数据下的稳定运行。 4. **分布式搜索**:Sphinx支持分布式搜索,可以将搜索负载分散到多个节点,提高整体系统的处理...
SSDB 是一个高性能的 NoSQL 数据库服务器,由 C++ 开发,专为处理大量数据设计,特别是亿级级别的列表和排序表。作为 Redis 的替代品,SSDB 提供了类似 Redis 的 API,并且支持多种编程语言的客户端,如 PHP、C++、...
传统的排序方法在数据量较小的时候是可行的,但在数据量达到亿级时,不仅消耗内存巨大,而且效率低下。因此,本文将介绍使用PHP语言实现二叉堆算法来高效解决Top K问题的方法。 首先,我们需要了解二叉堆的概念。...
1. **高性能**:能够处理数十亿条记录和TB级别的数据,每秒处理数千次查询,具有出色的索引建立速度和搜索性能。 2. **易于集成**:支持SQL和XML数据源,可以通过SphinxAPI、SphinxQL或SphinxSE接口进行搜索。 3. **...
支持文本编辑,比较,FTP编辑,FTP上传下载,加密,十六进制编辑,列模式,回行显示,正则表达式,多行查找和替换,代码折叠,关键字高亮显示,编辑400GB的大文件,比较100GB的大文件,对超过1G的大文件排序,删除...
1. **高性能**: 单一索引最多可支持1亿条记录,对于含有1千万条记录的索引,查询时间可达到毫秒级。 2. **快速索引**: 创建100万条记录的索引仅需3~4分钟;创建1000万条记录的索引可在50分钟内完成;增量索引更新...
12. 20GB的硬盘容量表示约200亿个字节(1GB=1024MB=1024*1024KB=1024*1024*1024B)。 13. 关系数据库中的记录顺序是可以任意颠倒的,不影响数据之间的关系。 14. 使用`STORE`命令后,要显示特定字符串,可以使用`...
1. 功能强大:MySQL 中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点。MySQL5 支持事务、视图、...
多多淘宝客V7.3免授权无限制商业正式版 ...13、修复获取亿起发订单无法自动跳转的问题 14、修复后台查杀木马 addadmin/list.php提示木马的问题 三、优化 1、优化搜索的关键词过滤。 2、优化淘宝客收录。
1. 高性能:Sphinx能够快速地处理大量数据,支持实时索引和近乎实时的搜索。它的设计目标是提供毫秒级的查询响应速度,即使在包含数亿条记录的大型数据库上也能实现。 2. 高精度:Sphinx提供了布尔、短语、近似和...
6. 硬盘容量:20GB的硬盘表示大约20亿个字节(每个字节由8个二进制位组成,即20*1024*1024*1024 bytes)。 7. 计算机病毒:计算机病毒是一种恶意软件,通常设计为自我复制并可能破坏系统或数据。 8. 用户创建工具...
2. 高性能检索:支持亿级数据量的毫秒级检索,提供多种排序方式,如相关度、销量等。 3. 智能纠错:内置智能纠错功能,可以自动纠正用户输入的错误关键词。 4. 丰富的查询语法:支持布尔查询、短语查询、模糊查询等...
4. **丰富的排序和过滤选项**:用户可以根据多个字段进行排序,还可以设置过滤条件,如按时间、评分等进行筛选。 5. **拼音和同义词支持**:对于中文环境,Sphinx可以支持拼音搜索和同义词库,提升用户体验。 6. **...
4. 20GB的硬盘容量表示大约200亿个字节,这里的换算关系是1GB = 1,000,000,000字节。 5. 程序流程图(PFD)中的箭头表示控制流,即程序执行的顺序或分支。 6. `trim()` 函数用于去除字符串两侧的空白字符,`Len()`...
SSDB是一个由C/C++编写的高性能NoSQL数据库,专为处理大量集合数据而设计,支持zset(排序集合)、map(哈希)、kv(键值对)和list(列表)等丰富的数据结构。其目标是作为Redis的替代品或补充,特别是在面对十亿...
分布式服务器设计,每张表都可创建单独的DB服务器群和CACHE服务器(群),单表可承受高达亿级以上的数据,方便部署和维护,是一个二次开发非常好的基石。 WellCMS更新日志: beta2版修复了已知错误: 1.修复后台灌水后...