Как получить параметр «размер страницы» в API ведения журнала Stackdriver в облачной платформе Google для возврата постраничных записей с маркером следующей страницы - PullRequest
0 голосов
/ 01 мая 2018

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

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 Ответ

0 голосов
/ 02 мая 2018

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...