MICUU
微资讯
声卡
创新2024全套教程
5.1声卡全套
创新声卡驱动
板载声卡调试全套教程
Sam机架安装
Sam机架
音效助手
专题
文档
技术文档汇总
站内文档
更多
软件
更新日志
关于
装机必备
Gramos模板
光年后台模板
Betube模板
美图
友情链接
站内导航
关于
搜索
退出登录
登录
原创
PHP读取超大文件-代码实测
2021-12-09
90.64w热度
文件大小 634M [![](https://micuu.com/data/avatar/20211209/b24ba4535e9ba6ed071b7a6512c8510c.png)](https://micuu.com/data/avatar/20211209/b24ba4535e9ba6ed071b7a6512c8510c.png) 啥是SPL,SPL是Standard PHP Library(PHP标准库)的缩写。根据官方定义,它是"a collection of interfaces and classes that are meant to solve standard problems"。但是,目前在使用中,SPL更多地被看作是一种使object(物体)模仿array(数组)行为的interfaces和classes。 1:获取总行数 ```php $csv_file = '1.sql'; $spl_object = new SplFileObject($csv_file, 'rb'); $spl_object->seek(filesize($csv_file)); echo $spl_object->key(); die; ``` [![](https://micuu.com/data/avatar/20211209/80c5f82ac29ec2bb53b9ffc5c6adb049.png)](https://micuu.com/data/avatar/20211209/80c5f82ac29ec2bb53b9ffc5c6adb049.png) | 运行类型 | 耗时 | | -------- | ------- | | php-fpm | 1s 左右 | | cli | < 1s | 2:读取文件 ```php $filename = '1.sql'; $method = 'r'; $fp = new SplFileObject($filename, $method); $fp->setFlags(SplFileObject::READ_CSV); foreach ($fp as $line) { if ($fp->valid()) { $row = $fp->current(); if (isset($row[0])) $data[] = $row; $fp->next(); print_r($row); } } die; ``` [![](https://micuu.com/data/avatar/20211209/c3d8a2d838b99b13de8cb93b525dbefa.png)](https://micuu.com/data/avatar/20211209/c3d8a2d838b99b13de8cb93b525dbefa.png) [![](https://micuu.com/data/avatar/20211209/3ca63e3e280c52d66c25521e00b09b7b.png)](https://micuu.com/data/avatar/20211209/3ca63e3e280c52d66c25521e00b09b7b.png) | 运行类型 | 耗时 | | -------- | ---------------------- | | php-fpm | 秒显示,但是网页会卡死 | | cli | cmd下显示很快 | 3:读取某行 至 某行的数据 如100到200行的数据 ```php $startLine = 100; //开始行 $endLine = 200; //结束行 $filename = '1.sql'; $method = 'r'; $fp = new SplFileObject($filename, $method); $fp->setFlags(\SplFileObject::READ_AHEAD); /* setFlags这个函数应该是用来声明操作的文档类型,不加这 一段的话后续获取出来的数据就是一段以逗号隔开的字符串, 因为我后续要做数组储存,方便做数据库操作,就不需要去另 外做转换操作,所以加上这一段,不需要的可以不加 */ $fp->seek($startLine - 1); // 转到第N行, seek方法参数从0开始计数 for ($i = 0; $i <= $endLine; ++$i) { $content[] = $fp->current(); // current()获取当前行内容 $fp->next(); // 下一行 } p($content); die; ``` [![](https://micuu.com/data/avatar/20211209/419bb2d1afda6f6a05eb6995231eb1be.png)](https://micuu.com/data/avatar/20211209/419bb2d1afda6f6a05eb6995231eb1be.png)
注:原创不易,转载请注明出处(
https://micuu.com/new/2429.html
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2022-02-22
上一篇:
蒸的鸡胸肉,真的很难吃哦
下一篇:
PHP 大文件复制 stream_copy_to_stream
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言
珍藏视频
10分钟高效燃脂
30天高效瘦脸操
5分钟缓解颈椎操
友人
微博
全民K歌
唱吧
今日头条
悠悠网
科技小锅盖
彼岸桌面
阮一峰
laravel社区
V2ex
掘金
更多>