[获取行数]php读取大文件提供性能的方法,PHP的stream_get_line函数读取大文件获取文件的行数的方......

背景:
下面是获取文件的行数的方法:
一个文件如果知道有几行的话,就可以控制获取一定的行数的数据,然后放入数据库。这样不管的读取大文件的性能,还是写入数据库的性能,都能得到很大的提高了。
下面是获取文件的行数的方法

$temp_file = 'error.log';
$fp = fopen($temp_file ,'r') or die("open file failure!"); $total_line = 0; if($fp){     /* 获取文件的一行内容,注意:需要php5才支持该函数; */     while(stream_get_line($fp, 8192, "\r\n")){         $total_line++;     }     fclose($fp); }

接下来好操作了吧?
以下的程序主要是每次最大入库1000条,余数不足1000的就入余数。
入库10W条数据时间也才几秒,所以说性能是大大滴的好的。
define('EACH_NUM', 1000);/* 每次入库的条数 */
if(!$total_line) die('no record!'); $logs = mod('logs_error'); $temp = array(); $num = ceil($total_line/EACH_NUM); $mod = fmod($total_line,EACH_NUM); for($i=0;$i<$num;$i++){     if(($i+1) == $num && $mod){         $temp = $logs->getFileLines($temp_file, $i*EACH_NUM+1, $mod);         $insert_num += $mod;     }else{         $temp = $logs->getFileLines($temp_file, $i*EACH_NUM+1, ($i+1)*EACH_NUM);         $insert_num += EACH_NUM;     }     /* 入库 */     $logs->insert($temp); } @unlink($temp_file); echo "Insert Record:{$insert_num} \nSuccess"; exit();

如果你还有更好的操作文件的方法,或者是更好的入库的方法,可以联系我,我们交流下。
来自:http://www.tuicool.com/articles/yQn2q2
 
 
方法二:进行系统调用
$file='xxx.file';
list($size, $file) = explode(" ", system("wc -l $file"));
//$size即文件的行数
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值