Как подсчитать количество предметов в таблице DynamoDB с использованием PHP в режиме реального времени?

У меня есть таблица в 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 часов.

Есть ли способ, чтобы я мог просматривать количество элементов в таблице в режиме реального времени?

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";
}

Итак, я нашел решение:

$result = $client->describeTable(array(
    'TableName' => 'errors'
));

// The result of an operation can be used like an array
echo $result['Table']['ItemCount'] . "\n";

Но это не то, что я хотел...

Мне нужно решение, которое покажет мне число в реальном времени, а не число, которое было верно 6 часов назад...

Другие вопросы по тегам