php 使用file_get_contents读取大文件的方法

当我们遇到文本文件体积很大时,比如超过几十M甚至几百M几G的大文件,用记事本或者其它编辑器打开往往不能成功,因为他们都需要把文件内容全部放到内存里面,这时就会发生内存溢出而打开错误,遇到这种情况我们可以使用PHP的文件读取函数file_get_contents()进行分段读取。

函数说明
string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )
和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents() 将返回 FALSE。

file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。

应用:

代码如下:

$str = $content=file_get_contents("2.sql",FALSE,NULL,1024*1024,1024);
echo $str;

如果针对较小文件只是希望分段读取并以此读完可以使用fread()函数

代码如下:

$fp=fopen('2.sql','r');
while (!feof($fp)){
$str.=fread($fp, filesize ($filename)/10);//每次读出文件10分之1
//进行处理
}

echo $str;

以上就是如何使用file_get_contents函数读取大文件的方法,超级简单吧,需要的小伙伴直接搬走!

(0)

相关推荐

  • php读取文件内容到数组的方法

    本文实例讲述了php读取文件内容到数组的方法.分享给大家供大家参考.具体分析如下: php中可以通过file()函数将文件读取到数组中,数组中的元素即为文件的每行,file()函数通过"\n"按行分割文件保存到数组,所以数组每个元素都是以"\n"结尾,我们可以通过 rtrim()函数将其去除 <?php $lines = file("/tmp/file.txt"); foreach ($lines as $line) { $line = r

  • php file_get_contents函数轻松采集html数据

    复制代码 代码如下: <?php //全国,判断条件是$REQUEST_URI是否含有html if (!strpos($_SERVER["REQUEST_URI"],".html")) { $page="http://qq.ip138.com/weather/"; $html = file_get_contents($page,'r'); $pattern="/<B>全国主要城市.县当天和未来五天天气趋势预报在线查询

  • PHP读取txt文件的内容并赋值给数组的代码

    2010-12-15.txt的文件内容如下: 复制代码 代码如下: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 T01 T02 T03 T04 T05 T06 T07 T08 T09 T10 T11 T12 T13 T14 T15 T16 思路如下:使用file_get_contents()获取txt文件的内容,然后通过explode()把获得的字符串转化为数组.获得数组长度可以使用count()

  • php file_get_contents取文件中数组元素的方法

    用file_get_contents()抓取了 这个网址上的内容 http://simonfenci.sinaapp.com/index.php?key=simon&wd=1314abc 看似好像反回的是数组..但是我不管怎么用foreach循环都报错.. 我只想把数组中的word里面的值 取出来. 方法如下:正解(其他的字段一样,把word替换即可) $s=file_get_contents('http://simonfenci.sinaapp.com/index.php?key=simon&a

  • PHP中file_get_contents高級用法实例

    本文实例讲述了PHP中file_get_contents高级用法,分享给大家供大家参考.具体分析如下: 首先解决file_get_contents的超时问题,在超时返回错误后就象js中的settimeout那样进行一次尝试,错误超过3次或者5次后就确认为无法连线伺服器而彻底放弃. 这裡就简单介绍两种解决方法: 一.增加超时的时间限制 注意:set_time_limit只是设定你的PHP程式的超时时间,而不是file_get_contents函数读取URL的超时时间. 我一开始以为set_time

  • php 使用file_get_contents读取大文件的方法

    当我们遇到文本文件体积很大时,比如超过几十M甚至几百M几G的大文件,用记事本或者其它编辑器打开往往不能成功,因为他们都需要把文件内容全部放到内存里面,这时就会发生内存溢出而打开错误,遇到这种情况我们可以使用PHP的文件读取函数file_get_contents()进行分段读取. 函数说明 string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset

  • python简单读取大文件的方法

    本文实例讲述了python简单读取大文件的方法.分享给大家供大家参考,具体如下: Python读取大文件(GB级别)采用的办法很简单: with open(...) as f: for line in f: <do something with line> 例如: with open(filepath,'r') as infile: for line in infile: print line 一切都交给python解释器处理,读取效率很高,且占用资源少. stackoverflow参考链接:

  • 使用Python读取大文件的方法

    背景 最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法. 准备工作 我们谈到"文本处理"时,我们通常是指处理的内容.Python 将文本文件的内容读入可以操作的字符串变量非常容易.文件对象提供了三个"读"方法: .read()..readline() 和 .readlines().每种方法可以接受一个变量以限制每次读取的数据量,但它们

  • Python文本处理之按行处理大文件的方法

    以行的形式读出一个文件最简单的方式是使用文件对象的readline().readlines()和xreadlines()方法. Python2.2+为这种频繁的操作提供了一个简化的语法--让文件对象自身在行上高效迭代(这种迭代是严格的向前的). 为了读取整个文件,可能要使用read()方法,且使用字符串的split()来将它拆分WEIGHT行或其他块. 下面是一些例子: >>> for line in open('chap1.txt'): # Python 2.2+ ... # proc

  • python实现读取大文件并逐行写入另外一个文件

    <pre name="code" class="python">creazy.txt文件有4G,逐行读取其内容并写入monday.txt文件里. def creazyRead(): ''''' with open("e:creazy.txt","r") as cr: for line in cr: print line ''' ms = open("e:creazy.txt") for line

  • PHP读取大文件的多种方法介绍

    读取大文件一直是一个头痛的问题,我们像使用php开发读取小文件可以直接使用各种函数实现,但一到大文章就会发现常用的方法是无法正常使用或时间太长太卡了,下面我们就一起来看看关于php读取大文件问题解决办法,希望例子能帮助到各位. 在PHP中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file.file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能.但当所操作的文件是一个比较大的文件时,这些函数可能就显的力不从心, 下面将从一个需求入手来说明对于读取

  • php fseek函数读取大文件两种方法

    php读取大文件,使用fseek函数是最为普遍的方式,它不需要将文件的内容全部读入内存,而是直接通过指针来操作,所以效率是相当高效的.在使用fseek来对文件进行操作时,也有多种不同的方法,效率可能也是略有差别的,下面是常用的两种方法. 方法一: 首先通过fseek找到文件的最后一位EOF,然后找最后一行的起始位置,取这一行的数据,再找次一行的起始位置,再取这一行的位置,依次类推,直到找到了$num行.实现代码如下: 整个代码执行完成耗时 0.0095 (s) function tail($fp

  • PHP读取大文件的几种方法介绍

    读取大文件一直是一个头痛的问题,我们像使用php开发读取小文件可以直接使用各种函数实现,但一到大文章就会发现常用的方法是无法正常使用或时间太长太卡了,下面我们就一起来看看关于php读取大文件问题解决办法,希望例子能帮助到各位. 场景:PHP读取超大文件,例如1G的日志文件,我这里使用的是400M的access.log文件 1.使用file直接读取 <?php $starttime=microtime_float(); ini_set('memory_limit', '-1'); $file =

  • PHP读取大文件末尾N行的高效方法推荐

    小文件几兆以内大小,都可以通过file()函数,将文件按行读入数组,在用array_pop取得最后一行,就可以了. 但是对于很大的文本文件来说,机器内存不够大,或者php本身memory_limit有限制,这个办法就不适用了,即使强行不限制,效率也是非常低的. 没有办法了吗?当然有,不过没有现成的函数了,需要自己动手了. 这里需要用到文件指针,学过C的应该知道指针式个嘛玩意,通俗的讲吧,PHP中通过fopen打开一个文件,这时候还没有读取文件,这时候指向的是文件开头,指针位置也就是0,当你通过f

  • C#使用FileStream循环读取大文件数据的方法示例

    本文实例讲述了C#使用FileStream循环读取大文件数据的方法.分享给大家供大家参考,具体如下: 今天学习了FileStream的用法,用来读取文件流,教程上都是读取小文件,一次性读取,但是如果遇到大文件,那么我们就需要循环读取文件. 直接上代码. 引用命名空间 using System.IO; 下面就是循环读取大文件的代码 class Program { static void Main(string[] args) { //循环读取大文本文件 FileStream fsRead; //获

随机推荐