Самый быстрый способ для анализа больших файлов XLS с PHP - PullRequest
0 голосов
/ 25 января 2019

Так что в основном я пытаюсь проанализировать большие файлы 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% сразу после запуска анализа, что не является большой проблемой, так как он достаточно стабилен, но я просто ищу возможный лучший / более быстрый способ сделать это, в частности, способвосстановить только одну строку, чтобы я быстрее возвращал заголовки, а затем, возможно, лучший способ отобразить имена столбцов в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...