Чтение CSV-файла кусками - PullRequest
       10

Чтение CSV-файла кусками

1 голос
/ 09 октября 2009

Для новой функции импорта для моих пользователей я использую fgetcsv для чтения CSV-файлов, созданных сайтами каталогизации социальных книг, такими как LibraryThing и Shelfari, а затем запускаю серию запросов Amazon для поиска ISBN из файлов. Я хочу, чтобы пользователи могли подтверждать названия, которые соответствуют определенным критериям, а затем добавлять их на свои локальные книжные полки.

Некоторые из этих файлов будут иметь сотни или тысячи записей, и я не могу усреднять больше чем 1 поиск в секунду с Amazon. Я также хочу, чтобы пользователи подтвердили, что мы правильно сопоставили их книги. Я думаю, что я должен обработать файл CSV порциями по 10 или 20 записей и отобразить «хиты» для подтверждения пользователями. Но я не могу понять, как это сделать эффективно.

Я могу прочитать CSV-файл в массив, выбрав, например, только ISBN, и я знаю, что могу использовать простой цикл в массиве для проверки 10 или 20 записей на Amazon. Но как мне разрешить пользователю принять или отклонить пакет записей, а затем просмотреть еще 10 или 20 без повторного запуска fgetcsv для файла CSV с перезагрузкой страницы?

Есть ли какой-нибудь простой способ, позволяющий массиву сохраняться между загрузками страниц? Или, возможно, я могу сделать паузу, чтобы принять пользовательский ввод внутри самого цикла

1 Ответ

0 голосов
/ 09 октября 2009

Почему бы просто не сделать метод отложенного импорта? Разрешите импорт CSV, обработайте данные в базе данных «временное хранилище», а в бэкэнде вы будете искать ISBN через процесс Amazon.

Пользователю будет предложено «ваши записи обрабатываются, вам будет предложено просмотреть их, как только мы закончим проверку» и т. Д .;

В этот момент они могут просматривать ваш список локально и не ограничиваться 1 / вторым поиском ISBN в Amazon. Я сомневаюсь, что пользователь захочет посидеть там, пока обрабатываются 10/20, а затем ждать больше следующей и следующей страниц.

Так что процесс должен складываться так:

  1. Пользователь импортирует данные (в то время как на бэкенде cronjob / process просматривает записи одну за другой, не заставляя пользователя ждать).
  2. Пользователю предлагается вернуться для проверки данных / Пользователь возвращается через некоторое время (получает уведомление и т. Д.)
  3. Пользователь просматривает список данных и проверяет его (разбит на страницы), после принятия вы перемещаете принятые / действительные записи в свою окончательную базу данных (действительные действительные данные).
  4. Если пользователь хочет остановить @ запись 100 из 100 000, вы даете ему такую ​​возможность, и у него есть такая «очередь» проверки.

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

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