2012-05-09 28 views
2

我遇到了將數據發送到DynamoDB的問題。我不知道是什麼問題,因爲它看起來程序運行正常,但我似乎沒有任何數據在我的數據庫中。我能夠使用Amazons tutorial創建表格,但是當我按照本教程進行操作時,如果我嘗試並將所有項目都刪除,並且只有一個項目時會失敗,因爲db中沒有任何更新。在PHP中使用DynamoDB批量put_item

下面是代碼,我很好奇,如果有人知道調試這類問題的方法。

<?php 
// If necessary, reference the sdk.class.php file. 
// For example, the following line assumes the sdk.class.php file is 
// in an sdk sub-directory relative to this file 
require_once('includes/backend.php'); 

// Instantiate the class 
$dynamodb = new AmazonDynamoDB(); 

#################################################################### 
# Setup some local variables for dates 

$one_day_ago = date('Y-m-d H:i:s', strtotime("-1 days")); 
$seven_days_ago = date('Y-m-d H:i:s', strtotime("-7 days")); 
$fourteen_days_ago = date('Y-m-d H:i:s', strtotime("-14 days")); 
$twenty_one_days_ago = date('Y-m-d H:i:s', strtotime("-21 days")); 

#################################################################### 
# Adding data to the table 

echo PHP_EOL . PHP_EOL; 
echo "# Adding data to the table..." . PHP_EOL; 

// Set up batch requests 
$queue = new CFBatchRequest(); 
$queue->use_credentials($dynamodb->credentials); 

// Add items to the batch 
$dynamodb->batch($queue)->put_item(array(
    'TableName' => 'ProductCatalog', 
    'Item' => array(
     'Id'    => array(AmazonDynamoDB::TYPE_NUMBER   => '101'    ), // Hash Key 
     'Title'   => array(AmazonDynamoDB::TYPE_STRING   => 'Book 101 Title' ), 
     'ISBN'   => array(AmazonDynamoDB::TYPE_STRING   => '111-1111111111' ), 
     'Authors'   => array(AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Author1') ), 
     'Price'   => array(AmazonDynamoDB::TYPE_NUMBER   => '2'    ), 
     'Dimensions'  => array(AmazonDynamoDB::TYPE_STRING   => '8.5 x 11.0 x 0.5'), 
     'PageCount'  => array(AmazonDynamoDB::TYPE_NUMBER   => '500'    ), 
     'InPublication' => array(AmazonDynamoDB::TYPE_NUMBER   => '1'    ), 
     'ProductCategory' => array(AmazonDynamoDB::TYPE_STRING   => 'Book'   ) 
    ) 
)); 


echo "Item put in <b>Reply</b>" . "<br/>"; 

// Execute the batch of requests in parallel 
$responses = $dynamodb->batch($queue)->send(); 

// Check for success... 
if ($responses->areOK()) 
{ 
    echo "The data has been added to the table." . PHP_EOL; 
} 
    else 
{ 
    utdump($responses); 
} 

謝謝您的時間

回答

1

嘗試設置你的區域明確,例如歐盟需要調用:

$myDynamoDbObject->set_region('dynamodb.eu-west-1.amazonaws.com'); 

這也可能是你有在不同地區的兩個表,其中有一個應用程序的工作,你試圖讀取(或跟蹤與Web控制檯),因爲一個又一個應用不同的默認區域。

如果您要跟蹤表中的項目數,請記住它不是實時數字,它每6小時左右更新一次。所以使用方式可以確保您的物品確實是通過在收到您的放入請求的「OK」響應後立即將其讀回來而寫入的。