【问题标题】:How to get the item count on a DynamoDB table using PHP in real-time?如何使用 PHP 实时获取 DynamoDB 表上的项目计数?
【发布时间】:2017-03-09 09:37:04
【问题描述】:

我在 Amazon DynamoDB 中有一个表。我想使用 PHP 脚本获取表中的项目数。

现在,我知道有很多关于这个主题的问题,但它们都已经过时了,而且解决方案使用了过时的 API。

我尝试运行此代码,但可能正如我所说,它使用了一个过时的 API,因为它找不到类:

$dynamodb = new DynamoMetadata();

$scan_response = $dynamodb->scan(array(
    'TableName' => 'Table',
    'Count' => true
));

echo "Count: ".$scan_response->body->Count."\n";

我也试过这个,但还是找不到类:

$dynamodb = new AmazonDynamoDB();

我也尝试使用describeTable 来获取ItemCount,但这个数字没有更新。它仅每 6 小时更新一次。

有没有办法可以实时查看表格中的项目数?

【问题讨论】:

  • @notionquest 是的,我确实提到过,但没有适合我的信息。 DescribeTable 选项与我无关,因为我需要更新的计数。我不明白如何在接受的答案中使用其他方法。你能帮我弄清楚该怎么做吗?
  • 有什么方法可以实时从表格中获取项目数?
  • 不行,除了扫描和计数之外别无他法。
  • @notionquest 你能帮我写代码吗?我不知道怎么写...可能使用循环...不太确定...

标签: php count amazon-dynamodb real-time obsolete


【解决方案1】:

以下解决方案帮助我使用 php7 和 AWS SDK v3 获得计数:

<?php
require 'vendor/autoload.php';

use Aws\S3\S3Client;

use Aws\DynamoDb\Exception\DynamoDbException;

$sharedConfig = [
    'region' => 'us-east-1',
    'version' => 'latest',
    'DynamoDb' => [
        'region' => 'us-east-1'
    ]
];

$sdk = new Aws\Sdk($sharedConfig);

$client = $sdk->createDynamoDb();
$tableName = '<TABLE NAME>';

$params = [
    'TableName' => $tableName,
    'Select' => 'COUNT'
];
try {
    $result = $client->scan($params);
    $count = current($result)['Count'];
    echo $count;
} catch (DynamoDbException $e) {
    echo "Unable to query:\n";
    echo $e->getMessage() . "\n";
}

【讨论】:

    【解决方案2】:

    所以,我找到了解决办法:

    $result = $client->describeTable(array(
        'TableName' => 'errors'
    ));
    
    // The result of an operation can be used like an array
    echo $result['Table']['ItemCount'] . "\n";
    

    但这不是我想要的……

    我需要一个能够实时显示数字而不是 6 小时前真实数字的解决方案...

    【讨论】:

    • 来自 API 参考文档,ItemCount —(整数)指定表中的项目数。 DynamoDB 大约每六个小时更新一次此值。最近的更改可能不会反映在此值中。
    • @notionquest,好的,还有其他实时更新的方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多