2014-09-05 2 views
0

У меня есть служба REST в PHP, которая возвращает мне ответ JSON или XML. Но одна ветка этой службы предназначена для обновления локальной базы данных, и проблема в том, что количество записей больше или меньше 180 000.отправить большое количество записей из службы отдыха

Мой вопрос: какой лучший подход для этой операции с большим количеством записей?

Я думал о создании временного файла на сервере, как CSV, TXT для JSON или XML и загрузить на клиенте в противном случае рекурсивно отправить запрос GET из списка идентификатор предыдущего запроса

possibile решение после того, как прочитал комментарий

Я нахожу решение в создании CSV-файл (28MB), затем пронестись (5MB) и проходящее, что для скачивания ...

+0

Какова ваша конкретная проблема с количеством записей? Вы получаете сообщение об ошибке? Из того, что я знаю, как JSON, так и XML не имеют предела для количества элементов, которые вы можете кодировать. Оба формата могут быть немного подробными, однако, если вы включите сжатие в пределах уровня HTTP, это в основном позаботится об этом. – hakre

+0

ошибка возврата серверной памяти и время выполнения процедуры increseand при увеличении количества данных – Ossarotte

ответ

0

веб-сервиса, который возвращает 180K записей концептуально неправильно, а случайная атака DoS в ожидании (не говоря уже о закрытой учетной записи хостинга из-за квоты трафика).

Вы должны осуществлять подкачку на это, как:

http://myserver.tld/myservice/getItems?from=100&max=1000 

Закрывают параметра max в разумном количестве (1000 или, возможно, 10000 для относительно небольших записей), и не забудьте выставить способ выяснить, в общее количество строк - либо в результате этого вызова, либо в другом вызове getItemCount.

+0

Один стандарт обмена данными, поддерживающий подкачку, а также пакетную обработку (и REST btw.), - это OData: http: // docs. oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html#_Toc372793748 – hakre

0

@Neils правильно, ваша служба RESTful не должна предоставлять много записей в одном запросе. Внесите пейджинг и добавьте ссылки HAL (http://phlyrestfully.readthedocs.org/en/latest/halprimer.html), если вы выберете.

Если ваш клиент правдиво нуждается в полном наборе данных, который большой (что опять же, вероятно, это дизайн, который нуждается в пересмотре), вы смотрите на другой вариант использования. Сгенерируйте эти данные как асинхронно, так и кешируйте соответствующим образом. Также рассмотрите, является ли XML/JSON правильным форматом для большого набора данных, зная, что ваш клиент будет загружать и анализировать его. Может ли плоский CSV или что-то достаточно?