欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP读取大文件,并保存到数据库

程序员文章站 2024-03-20 20:22:46
...

前段时间为了处理大文件抓破头皮,后来上网查阅相关的资料,自己摸索了一个逻辑,这个脚本大概能处理百万级的数据,往上的还没测试过。现将代码分享出给大家进行测试。

<?php
//localhost/test.php?file=?
//sql table(test):id key
//必须建立索引
ini_set('memory_limit', "-1");
set_time_limit(0);
$serve = 'localhost:3306';
$username = 'root';
$password = 'root';
$dbname = 'test';
$mysqli = new Mysqli($serve,$username,$password,$dbname);
if($mysqli->connect_error){
    die('connect error:'.$mysqli->connect_errno);
}
$mysqli->set_charset('UTF-8'); // 设置数据库字符集
$filename=$_GET['file'];
$filepath="./md5/".$filename.".txt";
//判断文件打开是否成功
if(file_exists($filepath)){
    //只读方式打开文件
    $fp = fopen($filepath, "r");
    //设置缓冲
    $buffer = '';
    //一次读取的字节数
    $buffer_size = 1024;
    //最终字符串
    $con_str = '';
    //开始循环读取$buffer_size
    while (!feof($fp)) {
        # code...
        //读文件到缓冲区
        $buffer = fread($fp, $buffer_size);
        //字符串拼接
        $con_str .= $buffer;
    }
    //关闭文件
    fclose($fp);
    //打印字符串内容
    $newarr=explode("\n",$con_str);
    foreach($newarr as $key=>$v){
        $newstr=str_replace(' ','',$newarr[$key]);;
        $mysqli->query("INSERT INTO txt (key) VALUES ('".$newstr."');
    }
    echo "成功!";
}else{
    echo "失败!";
}

如果有能优化的地方欢迎大家在下方评论哦~

上一篇: maven 打jar包

下一篇: Singleton Pattern