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