2013-09-26 3 views
0

Я использую amazon sdk v2 и используя фабрику aws для dynamoDB, и у меня есть простая операция putItem, но я не знаю, как я могу убедиться, что putItem был успешным или нет, потому что putItem возвращается Модель, которая не содержит никакой информации о состоянии операции. Есть идеи? Вот мой кодКак я могу убедиться, что DynamoDB putItem прошел успешно

class DynamoLogger{ 
protected $client; 
protected $tableName; 

public function __construct(ServiceBuilder $builder, $tableName) 
{ 
    $this->client = $builder->get('dynamodb'); 
    $this->tableName = $tableName; 
} 

public function log(Request $request) 
{ 
    $model = $this->client->putItem(array(
     'TableName' => $this->tableName, 
     'Item' => array(
      'cc_id' => array(
       'S' => $request->get('cc_id') 
      ), 
      'date' => array(
       'S' => date('Y-m-d H:i:s') . substr((string)microtime(), 1, 8) 
      ), 
      'tt_id' => array(
       'N' => $request->get('tt_id') 
      ), 
      'action_name' => array(
       'S' => $request->get('name') 
      ), 
      'action_value' => array(
       'S' => $request->get('value') 
      ), 
      'gg_nn' => array(
       'S' => $request->get('gg_nn') 
      ), 
      'ffr_id' => array(
       'N' => $request->get('ffr_id') 
      ) 
     ), 
     'ReturnValues' => 'ALL_OLD' 
    )); 
    return $model; 
} 

}

ответ

4

С AWS SDK для PHP 2.x, вы должны считать, что любая операция, которая возвращает без выбрасывания исключения была успешной. В случае с DynamoDB, если произошла ошибка, будет выброшен Aws\DynamoDb\Exception\DynamoDbException (или подкласс). Кроме того, в случае с DynamoDB служба не будет отвечать до тех пор, пока ваш товар не будет записан как минимум в 2 местоположения, что обеспечит целостность ваших данных.

Кроме того, с AWS SDK для PHP 2.x вы можете использовать синтаксис команды long-form для доступа к объектам запроса и ответа Guzzle, если вы заинтересованы в их интроспекции. Вот пример:

$command = $client->getCommand('PutItem', array(/*...params...*/)); 
$model = $command->getResult(); // Actually executes the request 

$request = $command->getRequest(); 
$response = $command->getResponse(); 
var_dump($response->isSuccessful()); 

Пожалуйста, см Commands and Response Models sections в AWS SDK для PHP Руководство пользователя.

+0

Это действительно помогло. Благодарю. – ufucuk

+0

Нет проблем! :-) –

Смежные вопросы