Я использую ларавель 5.6
Мой скрипт для вставки больших данных выглядит так:
...
$insert_data = [];
foreach ($json['value'] as $value) {
$posting_date = Carbon::parse($value['Posting_Date']);
$posting_date = $posting_date->format('Y-m-d');
$data = [
'item_no' => $value['Item_No'],
'entry_no' => $value['Entry_No'],
'document_no' => $value['Document_No'],
'posting_date' => $posting_date,
....
];
$insert_data[] = $data;
}
\DB::table('items_details')->insert($insert_data);
Пробовал вставить 100 запись скриптом, работает. Он успешно вставляет данные
Но если я пытаюсь вставить 50000 записей с помощью скрипта, он становится очень медленным. Я ждал около 10 минут, и это не сработало. Существует такая ошибка:
504 Gateway Time-out
Как я могу решить эту проблему?
chunk
поможет решить проблемы с использованием памяти, но не для вашего приложения, работающего слишком долго. Как предложил Роб, рассмотрите возможность использования очереди и создания задания для каждого отдельного элемента. Затем вы можете запустить кучу воркеров, чтобы обработать данные для вас. - person Dwight   schedule 24.07.2018