/** * Used for caching the results of a batch request. Never call this method directly; it is used * internally by the caching system. * * @param CFBatchRequest $batch (Required) The batch request object to send. * @return CFResponse A parsed HTTP response. */ public function cache_callback_batch(CFBatchRequest $batch) { return $batch->send(); }
/** * * This creates a new queue that can * have items added it to be batch * processed. * */ function createNewQueue() { $queue = new CFBatchRequest(); $queue->use_credentials($dynamodb->credentials); return $queue; }
/** * Deletes all of the versions of all Amazon S3 objects inside the specified bucket. * * @param string $bucket (Required) The name of the bucket to use. * @param string $pcre (Optional) A Perl-Compatible Regular Expression (PCRE) to filter the names against. The default value is <PCRE_ALL>. * @return boolean A value of <code>true</code> means that all object versions were successfully deleted. A value of <code>false</code> means that at least one object/version failed to delete. * @link http://php.net/pcre Regular Expressions (Perl-Compatible) */ public function delete_all_object_versions($bucket, $pcre = null) { // Instantiate $versions = $this->list_bucket_object_versions($bucket); // Gather all nodes together into a single array if ($versions->body->DeleteMarker() && $versions->body->Version()) { $markers = array_merge($versions->body->DeleteMarker()->getArrayCopy(), $versions->body->Version()->getArrayCopy()); } elseif ($versions->body->DeleteMarker()) { $markers = $versions->body->DeleteMarker()->getArrayCopy(); } elseif ($versions->body->Version()) { $markers = $versions->body->Version()->getArrayCopy(); } else { $markers = array(); } while ((string) $versions->body->IsTruncated === 'true') { $versions = $this->list_bucket_object_versions($bucket, array('key-marker' => (string) $versions->body->NextKeyMarker)); // Gather all nodes together into a single array if ($versions->body->DeleteMarker() && $versions->body->Version()) { $markers = array_merge($markers, $versions->body->DeleteMarker()->getArrayCopy(), $versions->body->Version()->getArrayCopy()); } elseif ($versions->body->DeleteMarker()) { $markers = array_merge($markers, $versions->body->DeleteMarker()->getArrayCopy()); } elseif ($versions->body->Version()) { $markers = array_merge($markers, $versions->body->Version()->getArrayCopy()); } } $objects = array(); // Loop through markers foreach ($markers as $marker) { if ($pcre) { if (preg_match($pcre, (string) $marker->Key)) { $xx = array('key' => (string) $marker->Key); if ((string) $marker->VersionId !== 'null') { $xx['version_id'] = (string) $marker->VersionId; } $objects[] = $xx; unset($xx); } } else { $xx = array('key' => (string) $marker->Key); if ((string) $marker->VersionId !== 'null') { $xx['version_id'] = (string) $marker->VersionId; } $objects[] = $xx; unset($xx); } } $batch = new CFBatchRequest(); $batch->use_credentials($this->credentials); foreach (array_chunk($objects, 1000) as $object_set) { $this->batch($batch)->delete_objects($bucket, array('objects' => $object_set)); } $responses = $this->batch($batch)->send(); $is_ok = true; foreach ($responses as $response) { if (!$response->isOK() || isset($response->body->Error)) { $is_ok = false; } } return $is_ok; }
// 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 dirname(__FILE__) . '/vendor/amazonwebservices/aws-sdk-for-php/sdk.class.php'; // Instantiate the class $dynamodb = new AmazonDynamoDB(array('key' => getenv('AWS_ACCESS_KEY'), 'secret' => getenv('AWS_SECRET_KEY'))); $dynamodb->set_region('dynamodb.' . getenv('AWS_REGION') . '.amazonaws.com'); #################################################################### # 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")); #################################################################### // 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'), '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')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'ProductCatalog', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_NUMBER => '102'), 'Title' => array(AmazonDynamoDB::TYPE_STRING => 'Book 102 Title'), 'ISBN' => array(AmazonDynamoDB::TYPE_STRING => '222-2222222222'), 'Authors' => array(AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Author1', 'Author2')), 'Price' => array(AmazonDynamoDB::TYPE_NUMBER => '20'), 'Dimensions' => array(AmazonDynamoDB::TYPE_STRING => '8.5 x 11.0 x 0.8'), 'PageCount' => array(AmazonDynamoDB::TYPE_NUMBER => '600'), 'InPublication' => array(AmazonDynamoDB::TYPE_NUMBER => '1'), 'ProductCategory' => array(AmazonDynamoDB::TYPE_STRING => 'Book')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'ProductCatalog', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_NUMBER => '103'), 'Title' => array(AmazonDynamoDB::TYPE_STRING => 'Book 103 Title'), 'ISBN' => array(AmazonDynamoDB::TYPE_STRING => '333-3333333333'), 'Authors' => array(AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Author1', 'Author2')), 'Price' => array(AmazonDynamoDB::TYPE_NUMBER => '2000'), 'Dimensions' => array(AmazonDynamoDB::TYPE_STRING => '8.5 x 11.0 x 1.5'), 'PageCount' => array(AmazonDynamoDB::TYPE_NUMBER => '600'), 'InPublication' => array(AmazonDynamoDB::TYPE_NUMBER => '0'), 'ProductCategory' => array(AmazonDynamoDB::TYPE_STRING => 'Book')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'ProductCatalog', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_NUMBER => '201'), 'Title' => array(AmazonDynamoDB::TYPE_STRING => '18-Bike-201'), 'Description' => array(AmazonDynamoDB::TYPE_STRING => '201 Description'), 'BicycleType' => array(AmazonDynamoDB::TYPE_STRING => 'Road'), 'Brand' => array(AmazonDynamoDB::TYPE_STRING => 'Mountain A'), 'Price' => array(AmazonDynamoDB::TYPE_NUMBER => '100'), 'Gender' => array(AmazonDynamoDB::TYPE_STRING => 'M'), 'Color' => array(AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Red', 'Black')), 'ProductCategory' => array(AmazonDynamoDB::TYPE_STRING => 'Bicycle')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'ProductCatalog', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_NUMBER => '202'), 'Title' => array(AmazonDynamoDB::TYPE_STRING => '21-Bike-202'), 'Description' => array(AmazonDynamoDB::TYPE_STRING => '202 Description'), 'BicycleType' => array(AmazonDynamoDB::TYPE_STRING => 'Road'), 'Brand' => array(AmazonDynamoDB::TYPE_STRING => 'Brand-Company A'), 'Price' => array(AmazonDynamoDB::TYPE_NUMBER => '200'), 'Gender' => array(AmazonDynamoDB::TYPE_STRING => 'M'), 'Color' => array(AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Green', 'Black')), 'ProductCategory' => array(AmazonDynamoDB::TYPE_STRING => 'Bicycle')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'ProductCatalog', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_NUMBER => '203'), 'Title' => array(AmazonDynamoDB::TYPE_STRING => '19-Bike-203'), 'Description' => array(AmazonDynamoDB::TYPE_STRING => '203 Description'), 'BicycleType' => array(AmazonDynamoDB::TYPE_STRING => 'Road'), 'Brand' => array(AmazonDynamoDB::TYPE_STRING => 'Brand-Company B'), 'Price' => array(AmazonDynamoDB::TYPE_NUMBER => '300'), 'Gender' => array(AmazonDynamoDB::TYPE_STRING => 'W'), 'Color' => array(AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Red', 'Green', 'Black')), 'ProductCategory' => array(AmazonDynamoDB::TYPE_STRING => 'Bicycle')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'ProductCatalog', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_NUMBER => '204'), 'Title' => array(AmazonDynamoDB::TYPE_STRING => '18-Bike-204'), 'Description' => array(AmazonDynamoDB::TYPE_STRING => '204 Description'), 'BicycleType' => array(AmazonDynamoDB::TYPE_STRING => 'Mountain'), 'Brand' => array(AmazonDynamoDB::TYPE_STRING => 'Brand-Company B'), 'Price' => array(AmazonDynamoDB::TYPE_NUMBER => '400'), 'Gender' => array(AmazonDynamoDB::TYPE_STRING => 'W'), 'Color' => array(AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Red')), 'ProductCategory' => array(AmazonDynamoDB::TYPE_STRING => 'Bicycle')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'ProductCatalog', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_NUMBER => '205'), 'Title' => array(AmazonDynamoDB::TYPE_STRING => '20-Bike-205'), 'Description' => array(AmazonDynamoDB::TYPE_STRING => '205 Description'), 'BicycleType' => array(AmazonDynamoDB::TYPE_STRING => 'Hybrid'), 'Brand' => array(AmazonDynamoDB::TYPE_STRING => 'Brand-Company C'), 'Price' => array(AmazonDynamoDB::TYPE_NUMBER => '500'), 'Gender' => array(AmazonDynamoDB::TYPE_STRING => 'B'), 'Color' => array(AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Red', 'Black')), 'ProductCategory' => array(AmazonDynamoDB::TYPE_STRING => 'Bicycle')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'Forum', 'Item' => array('Name' => array(AmazonDynamoDB::TYPE_STRING => 'Amazon DynamoDB'), 'Category' => array(AmazonDynamoDB::TYPE_STRING => 'Amazon Web Services'), 'Threads' => array(AmazonDynamoDB::TYPE_NUMBER => '0'), 'Messages' => array(AmazonDynamoDB::TYPE_NUMBER => '0'), 'Views' => array(AmazonDynamoDB::TYPE_NUMBER => '1000')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'Forum', 'Item' => array('Name' => array(AmazonDynamoDB::TYPE_STRING => 'Amazon S3'), 'Category' => array(AmazonDynamoDB::TYPE_STRING => 'Amazon Web Services'), 'Threads' => array(AmazonDynamoDB::TYPE_NUMBER => '0')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'Reply', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_STRING => 'Amazon DynamoDB#DynamoDB Thread 1'), 'ReplyDateTime' => array(AmazonDynamoDB::TYPE_STRING => $fourteen_days_ago), 'Message' => array(AmazonDynamoDB::TYPE_STRING => 'DynamoDB Thread 1 Reply 2 text'), 'PostedBy' => array(AmazonDynamoDB::TYPE_STRING => 'User B')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'Reply', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_STRING => 'Amazon DynamoDB#DynamoDB Thread 2'), 'ReplyDateTime' => array(AmazonDynamoDB::TYPE_STRING => $twenty_one_days_ago), 'Message' => array(AmazonDynamoDB::TYPE_STRING => 'DynamoDB Thread 2 Reply 3 text'), 'PostedBy' => array(AmazonDynamoDB::TYPE_STRING => 'User B')))); $dynamodb->batch($queue)->put_item(array('TableName' => 'Reply', 'Item' => array('Id' => array(AmazonDynamoDB::TYPE_STRING => 'Amazon DynamoDB#DynamoDB Thread 2'), 'ReplyDateTime' => array(AmazonDynamoDB::TYPE_STRING => $seven_days_ago), 'Message' => array(AmazonDynamoDB::TYPE_STRING => 'DynamoDB Thread 2 Reply 2 text'), 'PostedBy' => array(AmazonDynamoDB::TYPE_STRING => 'User A'))));