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