您的位置:首页 > 编程语言 > PHP开发

PHP处理一个5G文件,使用内存512M的,数据为整形,从大到小排序,优化排序算法

2016-04-13 16:53 746 查看
$file='./new.txt';

$fp = fopen($file, "r");
$chunk = 4096;//一次处理1M的字节 1M=1024*1024
$fs = filesize($file);
//$max = ($fs == PHP_INT_MAX) ? PHP_INT_MAX : filesize($file);
$readData ='';
for ($len = 0; $len < $max; $len += $chunk) {
$seekSize = ($max - $len > $chunk) ? $chunk : $max - $len;
fseek($fp, ($len + $seekSize) * -1, SEEK_END);
//    $readData = fread($fp, $seekSize) . $readData;
//    var_dump($readData);
//    echo '<br>';
//排序$readData
$readData = fread($fp, $seekSize);
sorting_array($readData);

//写入新文件
$t = fopen('./new.text', 'w');
fwrite($t,$readData);
fclose($t);
}
var_dump($readData);

fclose($fp);

//排序算法
function sorting_array($string){

}

目前只是把原始文件按块处理,里面可以经行排序,在吧新文件使用插入排序法,但是内存限制,各种超时,实现代码估计比较难
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: