Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * dynamo cron
- */
- require '/data/apps/html/application/libraries/aws-php-sample/vendor/autoload.php';
- use Aws\DynamoDb\DynamoDbClient;
- use Aws\DynamoDb\Marshaler;
- class DynamoDbCron {
- public function __construct() {
- $this->client = DynamoDbClient::factory(array(
- 'region' => 'us-west-2'
- ));
- $this->debug = true;
- $this->arrTable = [
- // 'tbl_scripts' => 'tbl_scripts_0224',
- // 'tbl_documents' => 'tbl_documents',
- // 'tbl_sessions' => 'tbl_sessions',
- 'tbl_hits' => 'tbl_hits20150315',
- 'tbl_scripts_hits' => 'tbl_scripts_hits20150315',
- // 'tbl_script_instances' => 'tbl_script_instances',
- ];
- }
- public function main() {
- $itrListTables = $this->client->getIterator('ListTables');
- $marshaler = new Marshaler();
- foreach ($itrListTables as $tableName) {
- $arrExistingTables[] = $tableName;
- }
- if ($this->debug) {
- echo "arrExistingTables";
- echo PHP_EOL;
- print_r($arrExistingTables);
- echo PHP_EOL;
- }
- foreach ($this->arrTable as $orgTableName => $tableName) {
- $tableNameYest = $orgTableName . $this->getPrefix('yesterday');
- // $tableNameYest = $tableName;
- $arrDescribeTable = $this->client->describeTable(array(
- 'TableName' => $tableNameYest
- ));
- $arrTableData = $arrDescribeTable->getPath('Table');
- $tableNameCreate = $orgTableName . $this->getPrefix("tomorrow");
- // $tableNameCreate = $tableName;
- $tableNameDelete = $orgTableName . $this->getPrefix('del');
- if (!in_array($tableNameCreate, $arrExistingTables)) {
- if ($this->debug) {
- echo PHP_EOL;
- echo "==============";
- echo PHP_EOL;
- echo "creating {$tableNameCreate}";
- echo PHP_EOL;
- }
- $this->createTable($tableNameCreate, $arrTableData);
- }
- if (in_array($tableNameDelete, $arrExistingTables)) {
- if ($this->debug) {
- echo PHP_EOL;
- echo "==============";
- echo PHP_EOL;
- echo "deleting {$tableNameDelete}";
- echo PHP_EOL;
- }
- // $this->deleteTable($tableNameDelete);
- }
- // exit("<pre> \n exited here in " . __FILE__ . " : " . __LINE__ . "</pre>");
- // break;
- } // EOF for loop
- } // EOF of function
- public function createTable($tableName, $arrTableData)
- {
- // Create tables
- $arrCreateParams = $arrTableData;
- $arrCreateParams['TableName'] = $tableName;
- $arrLog = [
- 'event' => 'create_table_' . $tableName,
- 'table_name' => $tableName,
- ];
- $this->putItem($arrLog);
- if (!$this->debug) {
- echo "arrCreateParams";
- echo PHP_EOL;
- print_r($arrCreateParams);
- echo PHP_EOL;
- }
- $this->client->createTable($arrCreateParams);
- // $this->client->waitUntil('TableExists', array('TableName' => $tableName));
- } // EOF of createTable
- public function deleteTable($tableName)
- {
- echo "\nwill delete $tableName\n";
- $this->client->deleteTable(array(
- 'TableName' => $tableName
- ));
- }
- public function putItem($data)
- {
- $arr = array(
- 'TableName' => 'cron_log',
- 'Item' => array(
- 'id' => array('N' => mt_rand()),
- 'c_ts' => array('N' => time()),
- 'event_time' => array('S' => date('Y-m-d H:i:s')),
- 'event' => array('S' => $data['event']),
- 'table_name' => array('S' => $data['table_name'])
- )
- );
- if ($this->debug) {
- echo "\n Logging\n";
- print_r($arr);
- }
- $this->client->putItem($arr);
- }
- public function getPrefix($day='today')
- {
- $tz = new DateTimeZone('UTC');
- $date = new DateTime(gmdate('Ymd'),$tz);
- if ($day === 'yesterday') {
- $date->add(DateInterval::createFromDateString('yesterday'));
- }
- if ($day === 'tomorrow') {
- $date->add(DateInterval::createFromDateString('tomorrow'));
- }
- if ($day === 'del') {
- // $date->add(DateInterval::createFromDateString('tomorrow'));
- $date->add(DateInterval::createFromDateString('-2Days'));
- }
- $retData = $date->format('Ymd');
- ///$retData = '_' . $retData;
- // $retData = '';
- return $retData;
- }
- }
- $obj = new DynamoDbCron();
- $obj->main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement