Как подсчитать количество предметов в таблице 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 часов назад...