Как получить опцию «размер страницы» в Google Cloud Platform Stackdriver Logging API для возврата постраничных записей с токеном следующей страницы

Когда я ввожу запрос, через тестовое окно консоли здесь:

https://cloud.google.com/logging/docs/reference/v2/rest/v2/entries/list

{
  "projectIds": [
    PROJECT_ID
  ],
  "resourceNames": [
    RESOURCE_NAMES
  ],
  "filter": FILTER,
  "orderBy": 'timestamp desc',
  "pageSize": 100
}

Я устанавливаю параметр размера страницы, и правильное количество записей возвращается вместе с токеном следующей страницы. Однако, когда я устанавливаю этот параметр в качестве параметра для запроса записей через PHP Cloud API, он просто возвращает результаты без разбивки на страницы; Игнорирование ограничения размера страницы.

Это проблема с php API, и нашел ли кто-нибудь обходной путь для этой проблемы?

putenv('GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_JSON_FILE');


$client = new Google_Client();
$client->useApplicationDefaultCredentials();


$this->loggingClient = new LoggingClient([
    'projectId' => PROJECT_ID
]);

// Get a logger instance.
$logger = $this->loggingClient->logger(LOGGER);

$options = array(
    'pageSize' => 100,
    'orderBy' => 'timestamp desc',
    'filter' => FILTER,
);
$entries = $this->loggingClient->entries($options);
$logs = array();
foreach ($entries as $entry) {
...

person Markus Mikely    schedule 01.05.2018    source источник


Ответы (1)


По умолчанию итератор, возвращаемый из LoggingClient::entries(), будет разбивать вас на страницы, пока вы выполняете итерацию. На самом деле он запрашивает только 100 журналов на запрос к серверу, это просто прозрачно для вас :).

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

$entries = $client->entries([
    'pageSize' => 100
]);

foreach ($entries->iterateByPage() as $page) {
    print count($page); // Should be 100
}

Надеюсь это поможет!

person david s    schedule 02.05.2018