Я пытаюсь загрузить файл .csv или .xls, содержащий около 10000 записей. Для первой попытки приведенная ниже функция / код читает файл csv и может вставить около 1600 строк / записей в таблицу транзакций за ~ 2 минуты, без строки кода: set_time_limit (0 ); И я получил: Максимальное время ожидания выполнения Ошибка
Со второй попытки, теперь с кодом: set_time_limit (0); На этот раз 10000 записей были вставлены через ~ 11 минут .
Мои вопросы сейчас:
1.Как я могу прочитать файл csv / xls и вставить его записи / строки размером> = 10000 в базу данных в приложении Laravel, очень быстро?
2. Практика, 'set_time_limit (0)' , которую я использовал здесь, это хорошо? Есть ли лучший способ, которым я могу пойти по этому поводу?
3.Перед чтением и вставкой, могу ли я определить время / максимальное время, необходимое для завершения операции / выполнения?
public function importDataSet(Request $request)
{
if(Input::hasFile('file')){
$file = Input::file('file');
$uname = uniqid();
$oname = $file->getClientOriginalName();
$filename = $uname.$oname;
//create a folder, data-sets, if not exist in the public folder
$filelocation = 'data-sets';
$filepath=$file->move($filelocation, $filename);
ini_set('auto_detect_line_endings', TRUE);
$header = '';
$rows = array_map('str_getcsv', file($filepath));
$header = array_shift($rows);
$csv = array();
set_time_limit(0);//reset maximum execution time to infinity for this function
foreach ($rows as $row) {
$csv[] = $row;//Is not used
//eturn $rows;
$transaction = new Transaction;
$transaction->dataset_id = 1;
$transaction->itemsets=json_encode($row);
$transaction->save();
}
}else{
//noting here
}
return 'Success';
}