php输出单行,file - php如何随机输出文件内一行?
我的文件很大,不想全部读取,再随机一行,想通过文件指针随机读取一行?
1273517
12736
1273521
127
127358612735381273538fa
1273606
13
1273636
...
回复内容:
我的文件很大,不想全部读取,再随机一行,想通过文件指针随机读取一行?
1273517
12736
1273521
127
127358612735381273538fa
1273606
13
1273636
...
现在有一个10G文件,要随机获取其中的一行数据。肯定不能一次把内容全部读取!!!
因此可以按字节随机读取
使用函数:
filesize 获取此文件的总字节
ftell 当前文件指针位置
fseek 定位文件指针位置
fgets 按行读取文件
实现思路有了吧:
开始位置可以随机取,即可实现随机读取数据。
比如总字节100,一行10字节,开始读取字节的位置随机取0~90字节中间的数。
为了数据的完整性,可以多读几行,那么结束位置就设为:开始位置+行数*每行字节大小
反正大概那个数就行了
因为每次读取不可能是一行的头,因为可以多读几行,然后用explode分割成一个数组,抛弃数组首尾,再随机获取其中的一条
下面这是按字节分页读取文件的内容,可以做个参考
public static function readFileBySize($file, $currentPage=1, $pageSize=100000)
{
$read = "";
$fileSize = filesize($file);
$totalPage = ceil($fileSize/$pageSize);
$start = filesize($file) - $currentPage*$pageSize;
$stop = filesize($file) - ($currentPage-1)*$pageSize;
$fp = fopen($file, 'r');
fseek($fp, $start, SEEK_SET);
while(ftell($fp) < $stop){
$read .= fgets($fp);
}
fclose($fp);
$memory = function_exists('ini_get') ? ini_get("memory_limit"):0;
$returnData = array(
"fileSize" => $fileSize,
"pageSize" => $pageSize,
"totalPage" => $totalPage,
"currentPage" => $currentPage,
"memory" => $memory,
"data" => $read
);
return $returnData;
}
文件不大可以直接用file()函数读取一个文件,返回一个数组,数组的每一个元素对应文件的一行.
文件大的话可以用文件指针.
$i++;
if($i === 4){ // if lines = 4
echo fgets($fp);
}
}
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php输出单行,file - php如何随机输出文件内一行?相关推荐
- Python:读出文本本件,统计单词数输出;读出文本文件,随机输出其中的10个单词
#读出文本本件,统计单词数输出:读出文本文件,随机输出其中的10个单词 import re import random f=open("this.txt","r" ...
- 【IO面试题】打印目录树形结构,并输出到file.txt中
1 package com.peter.solution; 2 3 import java.io.File; 4 import java.io.FileWriter; 5 import java.io ...
- linux命令行 随机排列,有趣的Linux命令行:随机输出唐诗宋词
有趣的Linux命令行:随机输出唐诗宋词 fortune命令,随机输出一句话,或者是一句英文名言,或者是一首唐诗宋词来,如果没有唐诗宋词,那就需要用fortune-zh bkjia@bkjia:~$ ...
- java实现随机输出26个小写字母
java实现随机输出26个小写字母 方法:在'a'加随机偏移量,随机偏移量用Math类的random方法实现 package com.word.word; //随机输出26个英文字母 public c ...
- shell随机输出一个人或多个人的学号及姓名
随机输出3个人的学号及姓名 随机输出1个人的学好及姓名 输出结果: 输出结果: 转载于:https://www.cnblogs.com/HeyJude/p/6195270.html
- java代码--------随机输出100个随机数,要求每行10个数
总结:不敢爱你么开口 package com.sads;///实现随机输出100个数字,数字是0到9之间,每行输出10个 public class Wss {public static void ma ...
- Java生成随机数并随机输出不重复的值
一个小Demo,网上有很多类似的代码,测试了一下网上的代码为了让随机输出值不重复,重复循环达到目的的效果,但循环次数过多严重影响性能. 通过ArrayList的remove方法实现了生成随机数并随机输 ...
- php随机名人名言,php随机输出名人名言的函数
使用php随机输出名人名言,每刷新一次就会随机出现一条语句,如果改作新年的祝福放在一起,也是这样展示给用户,是不是很温馨哦. 实现方法很简单,只需要一个字符串变量,这里面放所有要随机展现的名人名言,然 ...
- PHP程序随机输出一些字符串内容,已集成方法可直接使用
在博客中会用到一些随机显示的内容(字符串),将每1条内容按行切分,再随机显示一组,代码如下: /*** PHP程序随机输出一些内容,名言什么的* @return $poems* @Time 2018. ...
- 5.2 IO流(File类,Propertis配置文件,其他类(打印流,序列流,操作对象的流(序列化接口),随机访问文件的流,管道流,操作基本数据的流,操作数组的流,操作字符串的流),编码表)
1.File类 IO流的流对象只能操作设备上的数据.File类:1.用来将文件或者文件夹(也称目录)封装成对象. 2.方便对文件和文件夹的属性信息进行操作.(操作文件夹,文件的属性(创建时间,修改时间 ...
最新文章
- logging 模块记录日志
- python报错TabError: inconsistent use of tabs and spaces in indentation解决方案
- 新建文件夹html文件,JS实现新建文件夹功能
- 2017年10月08日普及组 世界语
- 【C语言】C语言实现面向对象编程之继承
- 【转】LCS和LCS服务器应用程序概述
- LG下月将用新品牌发布5G手机:比三星Galaxy S20更便宜
- 用触发器实现表的同步操作
- CF 55D Beautiful numbers 数位DP
- 55.模拟撕衣服游戏编辑图片
- 原来这些手机技巧这么好用!以前还不知道,今天领教了
- 链家网爬取深圳租房信息并存入MySQL
- 清华学霸尹成Python教程
- adobe服务器无响应,链接不到adobe服务器
- 微信小程序开发账号找回
- 优秀的论文答辩PPT模板值得被应用
- Denoising point sets via L0 minimization
- 一位月薪1.2w的北漂程序员真实生活!
- QT 与日置、安捷伦测试仪 通讯 232串口 GPIB
- 2021-08-07 解决安装MacTeX后界面显示法语问题