Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DynamoDB查询迭代器_Php_Laravel_Promise_Amazon Dynamodb - Fatal编程技术网

Php DynamoDB查询迭代器

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

根据官方的DynamoDB文档,任何查询操作都将检索最多1MB的数据,建议使用getIterator方法检索与查询匹配的整个数据列表。上提供的示例代码如下所示

$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的数据:(