[获取行数]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即文件的行数

时间: 2024-10-05 08:48:37

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

提升大数据数据分析性能的方法及技术(二)

上部分链接 致谢:因为我的文章之前是在word中写的,贴过来很多用mathtype编辑的公式无法贴过来,之前也没有经验. 参考http://www.cnblogs.com/haore147/p/3629895.html,一文完成公式的迁移. 同时,说一句,word中用mathtype写的公式用ALT+\可以转换成对应的latex语法公式. 5 数据流过滤技术 信息大爆炸时代的到来使得针对数据进行深层次的挖掘成为数据处理的核心任务[21].但是在上面已经提到了,源数据的来源和数据的组成格式都是各种

提升大数据数据分析性能的方法及技术(一)

关于此文 最近在忙着准备校招的相关复习,所以也整理了一下上学期上课时候的学到的一些知识.刚好发现当时还写了一篇类似于文献综述性质的文章,就在这里贴出来.题材是关于大数据的,也是比较火热的一个话题,虽然现在接触的项目与大数据不太有关联,可能以后也不一定从事这方面的工作吧.就IT行业的研究成果来讲国外期刊无论是发表速度还是质量都是高于国内,所以参考的大部分都是当时最新在核心期刊上发表的论文,参考文献在最后一一列出.因为文章没有多少自己的创新点,仅仅是最新.最热技术或者分析的一个总结,所以放上来仅仅是

【转载】python计算文件的行数和读取某一行内容的实现方法

一.计算文件的行数 最简单的办法是把文件读入一个大的列表中,然后统计列表的长度.如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了: count = len(open(filepath,'rU').readlines()) 如果是非常大的文件,上面的方法可能很慢,甚至失效.此时,可以使用循环来处理: count = -1for count, line in enumerate(open(thefilepath, 'rU')):    passcount +

php使用file函数、fseek函数读取大文件效率分析

php读取大文件可以使用file函数和fseek函数,但是二者之间效率可能存在差异,本文章向大家介绍php file函数与fseek函数实现大文件读取效率对比分析,需要的朋友可以参考一下. 1. 直接采用file函数来操作 由于 file函数是一次性将所有内容读入内存,而PHP为了防止一些写的比较糟糕的程序占用太多的内存而导致系统内存不足,使服务器出现宕机,所以默认情况下限制只能最大使用内存16M,这是通过php.ini里的 memory_limit = 16M 来进行设置,这个值如果设置-1,

java读取大文件 超大文件的几种方法

计算机技术学习用书: 编程技术资料:http://myitbook.taobao.com/  电脑技术群:291644908    用技术改变人生,欢迎您的加入 java 读取一个巨大的文本文件既能保证内存不溢出又能保证性能 2010-09-25 11:18:50|  分类: 默认分类 |字号 订阅 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.Rando

PHP读取大文件的几种方法

场景:PHP读取超大文件,例如1G的日志文件,我这里使用的是400M的access.log文件 1.使用file直接读取 <?php $starttime=microtime_float(); ini_set('memory_limit', '-1'); $file = 'testfile.txt'; $data = file($file); $line = $data[count($data) - 1000]; $endtime=microtime_float(); echo count($d

Shell按行读取文件的3种方法

Shell按行读取文件的方法有很多,下面写出三种方法: 写法一: #!/bin/bash #描述: # while循环读行操作 #作者:孤舟点点 #版本:1.0 #创建时间:2017-11-09 04:08:52 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH while read line do echo $line done < filename(待读取的文件) 写法二:

PHP 读取文件的几种方法

整理了一下PHP中读取文件的几个方法,方便以后查阅. 1.fread string fread ( int $handle , int $length ) fread() 从 handle 指向的文件中读取最多 length 个字节.该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况. fread() 返回所读取的字符串,如果出错返回 FALSE. <?ph

php读取文件内容的多种方法示例代码

分享下php中读取文件内容的几种方法,各有千秋,与大家共勉. 示例代码1: 用file_get_contents 以get方式获取内容<?php$url='http://www.jbxue.com/';$html=file_get_contents($url);//print_r($http_response_header);ec($html);printhr();printarr($http_response_header);printhr();?> 示例代码2: 用fopen打开url,