当前位置: 首页 > news >正文

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

$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){
    
    
}

目前只是把原始文件按块处理,里面可以经行排序,在吧新文件使用插入排序法,但是内存限制,各种超时,实现代码估计比较难

 

转载于:https://www.cnblogs.com/zx-admin/p/5387773.html

相关文章:

  • c++的this指针
  • CM android的CMUpdater分析(二)
  • Saving HDU hdu
  • activiti 动态配置 activiti 监听引擎启动和初始化(高级源码篇)
  • Webview组件和HTML的介绍
  • [一句秒懂]高仿QQ底部小红点弹簧效果
  • 安全关闭多Activity的Application
  • Android自定义控件之日历控件
  • path去除多余“/”和添加“/”正则
  • JS魔法堂:doctype我们应该了解的基础知识
  • CSS3魔法堂:禁止用户改变textarea大小
  • 音效
  • 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法...
  • ssl证书的对称密钥与非对称密钥
  • Linux LVM硬盘管理及LVM扩容
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Create React App 使用
  • HTTP中GET与POST的区别 99%的错误认识
  • laravel5.5 视图共享数据
  • node.js
  • React Native移动开发实战-3-实现页面间的数据传递
  • react 代码优化(一) ——事件处理
  • Sass Day-01
  • ubuntu 下nginx安装 并支持https协议
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 简析gRPC client 连接管理
  • 力扣(LeetCode)965
  • 面试总结JavaScript篇
  • 驱动程序原理
  • 三分钟教你同步 Visual Studio Code 设置
  • 探索 JS 中的模块化
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 异步
  • 赢得Docker挑战最佳实践
  • 用 Swift 编写面向协议的视图
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (1)Android开发优化---------UI优化
  • (30)数组元素和与数字和的绝对差
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Python第六天)文件处理
  • (二)hibernate配置管理
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (剑指Offer)面试题34:丑数
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • .stream().map与.stream().flatMap的使用
  • /etc/shadow字段详解
  • @RequestMapping用法详解
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [Android]使用Retrofit进行网络请求