2016-08-25 8 views
1

У меня есть огромный файл, который я бы хотел прочитать, чтобы заполнить базу данных mysql. Я пытался использовать библиотеку PHPExcel, но я получаю сообщение об ошибке, когда я хочу, чтобы загрузить мой файл:размер памяти превышает в phpexcel

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 22 bytes) in C:\Wamp\www\Classes\PHPExcel\Worksheet.php on line 964

я уже увеличил значение memory_limit в файле php.ini, но это все еще не достаточно. Мой файл Excel составляет более 60 МБ (5 109 719 ячеек).

У кого-нибудь есть идея, как решить эту проблему?

+0

Попробуйте установить ограничение памяти ** ini_set ('memory_limit', '2048M'); ini_set ('max_execution_time', 300); // 300 секунд = 5 минут ** внутри функции, где вы читаете excel. 'function reader() {ini_set ('memory_limit', '2048M'); ini_set ('max_execution_time', 300); // пишу вашу логику здесь } ' –

+0

Использовали ли вы какие-либо документированные методы сокращения использования памяти для больших файлов? Кэширование клеток? Погруженная загрузка? –

ответ

0

Чтение 5 миллионов ячеек с использованием PHPExcel - сложная проблема. Вы можете попробовать использовать кеширование ячеек или методы загрузки каналов, упомянутые Марк. Взгляните на документацию здесь: https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/04-Configuration-Settings.md

Я также пробовал читать миллионы ячеек с помощью PHPExcel, используя эти методы, но затем становится проблемой производительности (вместо проблемы с памятью). Чтение так много клеток навсегда. Таким образом, вы также можете попробовать использовать Spout: https://github.com/box/spout. Чтение 5 миллионов ячеек должно требовать только несколько МБ памяти и принимать от 20 до 40 минут.

0

Если у вас нет специальных функций, гораздо лучше экспортировать файл в формате CSV и импортировать его непосредственно в MySQL. 5 миллионов ячеек много, и это займет слишком много времени с PHP.

Importing a csv into mysql via command line

Я не большой поклонник Java, но для этого вы получите хороший LIB.

https://poi.apache.org/

POI выполнять хорошо на больших файлов и работает лучше, чем PHP. Если вы не можете преобразовать свой файл в CSV и прочитать его. Вы должны взглянуть на POI.

Смежные вопросы