今天遇到一个关于php读取超大文件的问题,当我们遇到文本体积较大时,比如超过几十M甚至几G的大文件,这时候直接读取很容易发生内存溢出的错误,这是因为此操作会把文件内容全部放到内存当中,这时我们就需要用到file_get_contents()进行分段读取。
函数说明
file_get_contents() 函数把整个文件读入一个字符串中。
和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
应用
$fp=fopen('xx.sql','r');
while (!feof($fp)){
$str.=fread($fp, filesize ($filename)/10);//每次读出文件10分之1//进行处理
}
echo $str;
希望对你有所帮助~
领取专属 10元无门槛券
私享最新 技术干货