21,887
社区成员
发帖
与我相关
我的任务
分享
$fp = fopen($filename, ‘r');
$t = 0;
while($buf = fgets($fp)) {
$ind[strtok($buf, "\t")] = $t;
$t = ftell($fp);
}
fclose($fp);
这样就得到了一个每个序号在文件中的位置的数组,排序后可写入定长记录文件中(索引文件)
使用时先用二分法在索引文件中找到指定序号在数据文件中的位置
500万最多折腾22次就找到了
然后在数据文件中 fseek 定位的查到的位置,fgets 读取对应的行
500万数据的索引放在数组中也是可接受的,不过 memory_limit 要大于 500M