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

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

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) {
...

1

Решение

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

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

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]