Только cURL-специфичные части массива - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь отбирать только части массива, сгенерированного игровым API. Более или менее я хотел бы пропустить элементы, которые не нужны для ускорения запроса. Это возможно? Пример

[1] => Apple  
    [0] => Stem  
    [1] => Leaf  
[2] => Orange  

Я бы хотел загрузить данные только под Apple. Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2012

Это невозможно, если у вас нет контроля над API

Если у вас есть контроль над API, вы можете позволить ему принимать дополнительные параметры, которые оцениваются веб-службой и должны быть добавлены в ваш HTTP-запрос. Таким образом, параметр & details = apple может быть оценен в бэкэнде следующим образом



    details = extractFromRequestParams("details");
    if (details==="apple") {
        printOutDetailsForApple();
    } else {
        printOutEverything();
    }

Если у вас нет контроля над API, ваш запрос cURL всегда будет выполнять весь запрос, извлекать все из ответа, и только после этого вы получите доступ к этому ответу.

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

...