Так что в основном я пытаюсь проанализировать большие файлы xls / xlsx в PHP (Laravel).Поток немного отличается от обычного:
1) Мне нужно извлечь заголовки столбцов из определенной строки (предоставленной пользователем) и вернуть в виде массива
2) Затем мне нужно проанализироватьФайл xls в массив
3) Мне нужно проиллюстрировать массив, сопоставляя ключи каждого значения с именем столбца (поскольку входные данные являются переменными, а столбцы mysql - нет), поэтому я изменю, например,[someKey => value] to [item => value] каждый раз
4) Затем я использую Laravel: insert () для пакетной вставки массива в базу данных
Это в основном API, поэтому он должен быть достаточно быстрым, например, для 15k строк файлов XLS.До сих пор я пробовал две вещи, каждая из которых имела свои проблемы:
1) Laravel Excel нет способа получить только одну строку, он анализирует весь файл дважды, один раз для возврата заголовков и один раздля сопоставления ключей значений
2) Python openpyxl , который я вызываю из контроллера Laravel с помощью exec()
, хотя и быстрее, но кажется более сложным в управлении, так как отображение массива вконкретные ключи становятся немного сложнее.
Есть ли лучший / более быстрый способ сделать что-то подобное?Laravel нельзя изменить, но все остальное - честная игра.У меня также нет нулевого контроля над входными файлами, но пользователь должен определить строку, содержащую заголовки.
Он работает на капле Digital Ocean, стеке LAMP, каплях, оптимизированных для ЦП, 4 ГБ / 2 vCPU.Он работает как спереди (React), так и сзади (Laravel) на одной машине.Что происходит, когда процессор начинает работать на 100% сразу после запуска анализа, что не является большой проблемой, так как он достаточно стабилен, но я просто ищу возможный лучший / более быстрый способ сделать это, в частности, способвосстановить только одну строку, чтобы я быстрее возвращал заголовки, а затем, возможно, лучший способ отобразить имена столбцов в массиве.