php - 如何获取 Google Cloud Platform Stackdriver Logging API 中的 'page size' 选项以返回带有下一页 token 的分页条目

标签 php logging google-cloud-platform stackdriver google-cloud-stackdriver

当我通过此处的控制台测试窗口输入请求时:

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

最佳答案

默认情况下,从 LoggingClient::entries() 返回的迭代器将在您迭代时为您分页。事实上,每个请求只向服务器请求 100 个日志,这对您来说是透明的:)。

如果您想快速获取一页结果,我们也提供以下支持:

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

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

希望这有帮助!

关于php - 如何获取 Google Cloud Platform Stackdriver Logging API 中的 'page size' 选项以返回带有下一页 token 的分页条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50118697/

相关文章:

PHPUnit - 在缓存打开/关闭的情况下运行所有​​测试两次?

javascript - 防止在定时在线测验中作弊

php - 管理面板的 htaccess 重写规则

php - 我的 SilverStripe 模块覆盖其他模块显示

android -> 来自 Android DownloadManager 的 20 GB 网站图像流量 - 这是什么?

c++ - 堵塞的意义何在?

Android Logcat 在模拟器中运行良好,在真实设备中运行不佳

python - 使用 Google Compute Engine 上的应用程序默认凭据访问 Sheets API

google-app-engine - 如何将 Cloud Armor 与 GAE Flex 结合使用?

google-app-engine - 谷歌云功能权限问题