php 使用file_get_contents读取大文件的方法当我们遇到文本文件体积很大时,比如超过几十M甚至几百M几G的大文件,用记事本或者其它编辑器打开往往不能成功 , 因为他们都需要把文件内容全部放到内存里面 , 这时就会发生内存溢出而打开错误,遇到这种情况我们可以使用PHP的文件读取函数file_get_contents()进行分段读取 。
函数说明
string
file_get_contents
(
string
$filename
[,
bool
$use_include_path
[,
resource
$context
[,
int
$offset
[,
int
$maxlen
]]]]
)
和
file()
一样,只除了
file_get_contents()
把文件读入一个字符串 。将在参数
offset
所指定的位置开始读取长度为
maxlen
的内容 。如果失败,file_get_contents()
将返回
FALSE 。
file_get_contents()
函数是用来将文件的内容读入到一个字符串中的首选方法 。如果操作系统支持还会使用内存映射技术来增强性能 。
应用:
复制代码
代码如下:
$str
=
$content=file_get_contents("2.sql",FALSE,NULL,1024*1024,1024);
echo
$str;
如果针对较小文件只是希望分段读取并以此读完可以使用fread()函数
复制代码
代码如下:
$fp=fopen('2.sql','r');
while
(!feof($fp)){
$str.=fread($fp,
filesize
($filename)/10);//每次读出文件10分之1
//进行处理
}
echo
$str;
php如何读取CSV大文件并且将其导入数据库示例思路:
读取csv文件,每读取一行数据,就插入数据库
示例
文件夹结构
/
file.csv//csv大文件,这里只模拟三行数据 , 不考虑运行效率(PS:csv文件格式很简单 , 文件一般较?。馕龊芸欤诵行实钠烤敝饕谛慈胧菘獠僮鳎?
index.php//php文件
file.csv
singi,20
lily,19
daming,23
index.php
/**
* 读取csv文件,每读取一行数据,就插入数据库
*/
//获取数据库实例
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'root';
$password = '';
try {
$db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e-getMessage();
}
//读取file.csv文件
if (($handle = fopen("file.csv", "r")) !== FALSE) {
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
//写入数据库
$sth = $db-prepare('insert into test set name=:name,age=:age');
$sth-bindParam(':name',$row[0],PDO::PARAM_STR,255);
$sth-bindParam(':age',$row[1],PDO::PARAM_INT);
$sth-execute();
}
fclose($handle);
}
数据表
CREATE TABLE `test` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NULL DEFAULT '' COLLATE 'utf8mb4_bin',
`age` INT(10) NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;
运行结束后 , 数据库中会插入csv中的三行数据
PHP如何对CSV大文件进行读取并导入数据库fgetcsv 可以读取fopen打开的文件,并读取一行 ,
这样可以防止文件太大而内存溢出
然后每读取一定行数 , 入库一次,
【php读取数据库大文件 php读取excel文件存进数据库】关于php读取数据库大文件和php读取excel文件存进数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 游戏无法显示开发者选项,玩游戏开发者选项
- 贴吧发消息怎么发视频号,贴吧怎么私发消息
- excel如何用时间归类,时间归类表格
- 如何让ios9支持typec耳机,iphone怎么用typec耳机
- vb.net弹出文件夹 vb打开文件夹对话框
- oracle层级查询level,oracle层级查询是怎么实现的
- 直播首卡是什么卡,主播直播卡是什么
- 地下经营小游戏,地下经济是什么意思
- 用什么给java代码注释 java代码怎么注释