Php DynamoDB查询迭代器
根据官方的DynamoDB文档,任何查询操作都将检索最多1MB的数据,建议使用getIterator方法检索与查询匹配的整个数据列表。上提供的示例代码如下所示Php DynamoDB查询迭代器,php,laravel,promise,amazon-dynamodb,Php,Laravel,Promise,Amazon Dynamodb,根据官方的DynamoDB文档,任何查询操作都将检索最多1MB的数据,建议使用getIterator方法检索与查询匹配的整个数据列表。上提供的示例代码如下所示 $iterator = $client->getIterator('Query', array( 'TableName' => 'errors', 'KeyConditions' => array( 'id' => array( 'AttributeV
$iterator = $client->getIterator('Query', array(
'TableName' => 'errors',
'KeyConditions' => array(
'id' => array(
'AttributeValueList' => array(
array('N' => '1201')
),
'ComparisonOperator' => 'EQ'
),
'time' => array(
'AttributeValueList' => array(
array('N' => strtotime("-15 minutes"))
),
'ComparisonOperator' => 'GT'
)
)
));
// Each item will contain the attributes we added
foreach ($iterator as $item) {
// Grab the time number value
echo $item['time']['N'] . "\n";
// Grab the error string value
echo $item['error']['S'] . "\n";
}
但是,我希望在一个json对象中整理结果,并在迭代完成后将其作为响应返回。我试图在foreach循环上使用try块,如下代码所示。但有一条错误消息显示“localhost当前无法处理此请求”,错误代码为500
我处理承诺的方式有什么问题吗(它们被认为是承诺吗?)?还是纯粹因为数据集太大,连接超时?我在实例化DynamoDbClient时故意注释掉了connect_timeout参数,但它仍然不允许我获取更多数据。。。你有什么建议可以帮我解决这个问题吗
$results = array();
try {
foreach($iterator as $item){
array_push($results, $item);
}
return response()->json($results);
} catch (AwsException $e) {
return response()->json($e);
}
您可以只在一次迭代中尝试这段代码,然后执行break,然后查看results@MohammadAlabed好主意,但没有达到我预期的效果。我在foreach循环中做了一个dd($result),以查看在1次迭代后我将得到什么,并且只有一条记录,而不是第一批1MB的数据:(您可以仅在一次迭代中尝试此代码,然后执行break,然后查看results@MohammadAlabed好主意,但没有达到我预期的效果。我做了一个dd($result)在foreach循环中,查看我在1次迭代后将得到什么,并且只有一条记录,而不是第一批1MB的数据:(