PHP - вызов API foreach

Я только что наткнулся на эту проблему и хотел уточнить некоторые вещи для пользователей, новых для python, исходящих из фона javascript.

В javascript a.reverse () меняет местами и также возвращает массив, когда

Javascript:

var a = [2, 3 ,4]
console.log(a.reverse())
// outputs [4, 3, 2]

В python a.reverse () меняет место на место, но не возвращает массив. Вот что вызвало путаницу для меня.

В python:

a = [2, 3, 4]
a.reverse()
print(a)
# outputs [4, 3, 2]
# can't do print(a.reverse())
0
задан Jim Wright 13 July 2018 в 09:50
поделиться

1 ответ

Итак, вы на самом деле вызываете API снова, вы просто не итерации по результатам.

$shouldProcess = true;
$searchIndex = 0;
$items = [];
while ($shouldProcess) {
    $processedThisLoop = 0;
    $function_call = getPROsitemapsEntries($searchIndex);
    $responseData = json_decode($function_call->getBody(), true);

    foreach($responseData['result']['entries'] as $entries) {
        $items[] = $entries;
        $searchIndex++;
        $processedThisLoop++;
    }

    if($processedThisLoop == 0) {
        // Didn't find any so stop the loop
        $shouldProcess = false;
    }
}

var_dump($items);

В приведенном выше коде мы отслеживаем общее количество записей, которые мы обработали в $searchIndex. Это позволит нам продолжать получать новые элементы вместо старых.

$shouldProcess - это bool, который будет определять, следует ли нам пытаться получить новые записи из API.

$items - это массив, в котором будут храниться все записи из API.

$processedThisLoop содержит количество записей, которые мы обработали в этом цикле, т. е. этот запрос к API имел записи для обработки? Если это не так, установите $shouldProcess в false, и это остановит цикл while.

2
ответ дан Jim Wright 17 August 2018 в 13:15
поделиться
  • 1
    Похож на то, что просус длится долго: message: & quot; Система была остановлена, потому что произошла ошибка. code: 1, message: запрос был прерван, потому что он превысил максимальное время выполнения. & quot ;, – Asim 13 July 2018 в 09:59
  • 2
    Где работает ваш код? – Jim Wright 13 July 2018 в 10:01
  • 3
    Localhost, im используя Guzzle с хостингом в Google App Engine – Asim 13 July 2018 в 10:02
  • 4
    Существует опция конфигурации php, называемая max_execution_time , которая по умолчанию составляет 30 секунд. Если вы получаете локальную ошибку, вам необходимо ее обновить. Если ошибка в Google App Engine, я думаю, что максимальное время выполнения составляет 60 секунд, но я не уверен, как это обновить. Вы должны задать еще один вопрос по этому вопросу, поскольку он больше не входит в сферу применения этого. – Jim Wright 13 July 2018 в 10:06
  • 5
    max_execution_time = 300. Спасибо @ Jim, что вы много сделали для меня, даже закодировали его для меня, и объяснили, как это работает. Большое спасибо! :) – Asim 13 July 2018 в 10:11
Другие вопросы по тегам:

Похожие вопросы: