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 }

 

posted @ 2013-05-12 13:32  小吴学长  阅读(163)  评论(0编辑  收藏  举报