Работа с большими объемами данных через XML API - PullRequest
0 голосов
/ 07 сентября 2011

Итак, я искал кое-что здесь, но не смог найти ничего хорошего, извинения, если мой поиск-фу недостаточен ...

Итак, что у меня есть сегодня , так это то, что мойпользователи загружают текстовый файл CSV с помощью формы в мой скрипт PHP, а затем я импортирую этот файл в базу данных после проверки каждой строки в нем.Текстовый файл может содержать до 70000 строк, и каждая строка содержит 24 поля значений.Это, очевидно, не проблема, так как работа с такими данными.Каждая строка должна быть проверена, плюс я проверяю БД на наличие дубликатов (в соответствии с динамическим ключом, сгенерированным из данных), чтобы определить, должны ли данные быть вставлены или обновлены.

Верно, но мои клиенты теперь запрашиваютавтоматический API для этого, поэтому им не нужно вручную создавать и загружать текстовые файлы.Конечно, но как мне это сделать?

Если бы я использовал REST-сервер, память бы очень быстро исчерпала бы, если бы один запрос содержал XML для вставки 70 тыс. Постов, так что об этом не может быть и речи.

Итак, как мне это сделать?Я подумал о трех вариантах, пожалуйста, помогите решить или добавьте больше вариантов в список

  1. Один пост на запрос.Не все клиенты имеют сообщения по 70 тыс., Но обновление БД может привести к тому, что API обработает 70 тыс. Запросов за короткий период, и, вероятно, это будет ежедневно в любом случае.

  2. X количествосообщений по запросу.Установите ограничение на количество сообщений, с которыми API работает в каждом запросе, например, до 100 за раз.Это означает 700 запросов.

  3. API требует, чтобы клиентский скрипт загружал файл CSV, готовый для импорта, используя текущую подпрограмму.Это кажется «хрупким» и не очень современным.

Есть еще идеи?

Ответы [ 3 ]

1 голос
/ 07 сентября 2011

Если вы ознакомитесь с обработкой SAX http://en.wikipedia.org/wiki/Simple_API_for_XML и кодировкой HTTP-блока http://en.wikipedia.org/wiki/Chunked_transfer_encoding, вы увидите, что можно выполнить анализ XML-документа во время его отправки.

0 голосов
/ 16 сентября 2011

Теперь я решил эту проблему, установив ограничение в 100 сообщений на запрос, и я использую REST через PHP для обработки данных.Загрузка 36 000 сообщений занимает около двух минут со всей проверкой.

0 голосов
/ 07 сентября 2011

Прежде всего, не используйте XMl для этого! Используйте JSON, это быстрее, чем xml.

Использую в своем проекте импорт из xls. файл очень большой, но скрипт работает нормально, просто клиент должен создавать файлы с такой же структурой для импорта

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