【发布时间】:2019-02-11 06:19:31
【问题描述】:
我是 laravel 和 php 的新手。我正在解决将大数据插入数据库的问题,这需要很多时间。所以我在考虑将数据分成块并创建多个线程来插入这些数据块。我正在使用 php 7.2.4 和我的 laravel 5.5。 这是我的代码:
$row = 1;
$contactNumberList = [];
if (($handle = fopen($path . "/" . $fileName . "." . $fileExt ."", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$row++;
$contact_number = $this->filter_contact($data[0]);
if($contact_number != null){
$contactNumberList[] = ['contact_number' => $contact_number];
}
}
fclose($handle);
}
//insert records
\DB::table('contacts_'. $list_id)->insert($contactNumberList);
【问题讨论】:
-
假设您有 1000 GB 要上传,有 10 台计算机并为每台分配 100 GB 来上传。这也取决于您的服务器带宽需要多少时间
-
实际上我正在上传一个 csv 文件,并在过滤 csv 中的记录后将其插入数据库。它不是一个很大的文件,它包含 500 万条记录。 csv的解析和过滤不需要太多时间,唯一的问题是数据插入。
-
文件读取需要时间。
标签: php multithreading laravel apache wamp