2015-07-10 2 views
1

Моя компания разрабатывает API для представления данных нашим заинтересованным сторонам. Пользователь может войти в систему и увидеть множество наборов данных на нескольких разных страницах. Одно из предостережений заключается в том, что пользователь, который зарегистрирован, может иметь других «пользователей», которые каким-то образом заработали им компенсацию, и они видят эти данные на каждой отдельной странице.PHP API-запрос с большим параметром массива

Ошибка состоит в том, что некоторые пользователи могут иметь более 2000 ассоциированных пользователей, для которых они видят данные. Деловое требование состояло в том, чтобы эти «подпользователи» были помещены в раскрывающийся список и разрешили зарегистрированному пользователю проверить/снять флажок для фильтрации и выключения набора данных. Параметры для одного из наших конечных точек являются:

user  => string 
subUsers => array 
dates => array 

Массив дат состоит из «С» и «» даты, чтобы позволить пользователю смотреть на исторической отчетности. Поскольку это всего лишь отчетность, запросы - это просто команды выбора. Кажется, что сами запросы работают нормально (менее 1 секунды). Однако фактический запрос через сам API занимает много времени. Недавно нам пришлось изменить запросы «GET» на запросы «POST» из-за размера для некоторого массива Sub User. Нам также пришлось увеличить max_input_vars с 1000 по умолчанию до 5000. Этого было недостаточно для некоторых, поэтому мы увеличили до 10 000. Это лишь временное решение и не может считаться жизнеспособным вариантом для поддержания максимума max_input_vars. Однако это обновление позволило API завершить обработку, но не ускорило его.

Существуют ли какие-либо рекомендации или рекомендации при работе с параметрами, которые могут содержать такие большие массивы? Любые рекомендации или отзывы о том, как наилучшим образом справиться с этим типом требований, будут очень признательны. Спасибо!

ответ

0

max_input_vars и max_input_time неожиданно влияют на переменную $ _POST. Если время, необходимое для публикации данных, больше, чем max_input_time, $ _POST начнет пропускать значения. То же самое происходит и для max_input_vars.

Одним из решений этого вопроса было бы не размещать массив как массив, а кодировать его как строку при его публикации (используя serialize/json_encode) и декодировать его в API. Это должно дать вам ускорение скорости.

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