1
我有一个ID数组(eventids
),它可以是表中的百万或十亿个ID。我正在使用for循环遍历每个id,并使用PHP中的查询操作从Dynamo数据库表中检索项目。但是,由于查询操作会遍历表中的大量信息,因此查询操作需要很长时间才能完成工作。所以,在这种情况下,我没有得到任何结果,因为我得到了一个时间。以下代码尝试执行此操作,该操作无法处理大量信息。我在想,如果您对$sfweventarrayRDS
阵列中的大量ID有更快的查询操作和建议,您是否有任何建议或建议?服务器上的DynamoDB查询操作超时从表中获取项目
for ($j = 0 ; $j < count($sfweventarrayRDS) ; $j++){
$keyconditions = array(
"eventid" => array(
"ComparisonOperator" => ComparisonOperator::EQ,
"AttributeValueList" => array(
array(Type::NUMBER => $sfweventarrayRDS[$j]["eventid"])
)
)
);
$sfweventarrayDynamo = Dynamo::getItems("eventlocation",$keyconditions,$limit);
if (count($sfweventarrayDynamo) > 0){
$timediffepoch = $sfweventarrayDynamo[0]["edatecreated"]["N"] - $sfweventarrayRDS[$j]["edatecreated"];
$timediffstandard = new DateTime("@$timediffepoch");
if ($timediffstandard->format('i') >= 5){
$starttimeepoch = $sfweventarrayRDS[$j]["edatecreated"];
$endtimeepoch = $sfweventarrayDynamo[0]["edatecreated"]["N"];
$starttimestandard = new DateTime("@$starttimeepoch");
$endtimestandard = new DateTime("@$endtimeepoch");
$each_event = array("eventid" => $sfweventarrayDynamo[0]["eventid"]["N"],
"organizationid" => $sfweventarrayRDS[$j]["organizationid"],
"userid" => $sfweventarrayDynamo[0]["userid"]["N"],
"starttime" => $starttimestandard->format('Y-m-d H:i:s'),
"endtime" => $endtimestandard->format('Y-m-d H:i:s'),
"location" => $sfweventarrayRDS[$j]["location"],
"startlatitude" => $sfweventarrayRDS[$j]["latitude"],
"startlongitude" => $sfweventarrayRDS[$j]["longitude"],
"endlatitude" => $sfweventarrayDynamo[0]["latitude"]["N"],
"endlongitude" => $sfweventarrayDynamo[0]["longitude"]["N"]);
array_push($safewalkeventsDynamo, $each_event);
}
}
}
非常感谢您的回答,我一定会用它作为未来的参考。所以,我发现问题不是服务器超时而是ajax调用。因此,我没有把它作为web服务调用,而是创建了一个命令行工具,它可以在服务器上运行,并给出结果,尽管需要一段时间。 – 2014-10-02 15:44:56