PHP读取大文件随记

PHP在读取文件时,我们大多会采用fgets函数一行一行的读取,while循环,采用feof函数判断是否到达文件末尾。但我们有些时候读一行处理一行太麻烦,我们可以读取指定行后在进行一次处理。比如要将test.txt文件里面uid:fuid1,fuid2,fuid3读取出来插入数据库,读一行插入一行对数据库开销太大(需要建立连接等等操作),可以选择读取多行,先将其存如数组中,然后来一个批量操作,这样原本可能100条数据,每次插入50条,这样数据库就只需要连接两次就可以,开销大大减少。

 

 1 /**

 2  *

 3  *读取一个大文件,读取指定行后,执行某种操作

 4  *

 5  */

 6 

 7 function read_file($fileName, $length = 4) {

 8 

 9    if(!file_exists($fileName)) {

10        die($fileName.'file not exists!');

11    }

12 

13    $inputHandle = fopen($fileName,'r');

14    $index = 0;

15    $dataArray = array();

16 

17      while(!feof($inputHandle)) {

18             $line = trim(fgets($inputHandle));

19             //将数据放入数组中

20             if($line != '') {

21                   //对$line进行某种处理后将其放入数组中,比如拆分

22                   $dataArray[] = $line;

23                   $index ++;

24             }

25 

26             if(feof($inputHandle) || $line == '' || $index == $length) {

27                   //do someting 比如数据库操作

28                   echo "----------".count($dataArray)."-----------\n";

29                   //重新开始计数

30                   $index = 0;

31                   //重新初始化数组

32                   $dataArray = array();

33             }

34      }

35 }

 

你可能感兴趣的:(PHP)