Advertisement
Guest User

Untitled

a guest
Mar 30th, 2015
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.80 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * dynamo cron
  5.  */
  6. require  '/data/apps/html/application/libraries/aws-php-sample/vendor/autoload.php';
  7.  
  8. use Aws\DynamoDb\DynamoDbClient;
  9. use Aws\DynamoDb\Marshaler;
  10.  
  11. class DynamoDbCron {
  12.  
  13.     public function __construct() {
  14.         $this->client = DynamoDbClient::factory(array(
  15.                     'region' => 'us-west-2'
  16.         ));
  17.         $this->debug = true;
  18.  
  19.         $this->arrTable = [
  20.             // 'tbl_scripts' => 'tbl_scripts_0224',
  21.             // 'tbl_documents' => 'tbl_documents',
  22.             // 'tbl_sessions' => 'tbl_sessions',
  23.             'tbl_hits' => 'tbl_hits20150315',
  24.             'tbl_scripts_hits' => 'tbl_scripts_hits20150315',
  25.             // 'tbl_script_instances' => 'tbl_script_instances',
  26.         ];
  27.     }
  28.  
  29.     public function main() {
  30.  
  31.         $itrListTables = $this->client->getIterator('ListTables');
  32.         $marshaler = new Marshaler();
  33.         foreach ($itrListTables as $tableName) {
  34.             $arrExistingTables[] = $tableName;
  35.         }
  36.         if ($this->debug) {
  37.             echo "arrExistingTables";
  38.             echo PHP_EOL;
  39.             print_r($arrExistingTables);
  40.             echo PHP_EOL;
  41.         }
  42.         foreach ($this->arrTable as $orgTableName => $tableName) {
  43.  
  44.             $tableNameYest = $orgTableName . $this->getPrefix('yesterday');
  45.             // $tableNameYest = $tableName;
  46.             $arrDescribeTable = $this->client->describeTable(array(
  47.                 'TableName' => $tableNameYest
  48.             ));
  49.             $arrTableData =  $arrDescribeTable->getPath('Table');
  50.             $tableNameCreate = $orgTableName . $this->getPrefix("tomorrow");
  51.            // $tableNameCreate = $tableName;
  52.             $tableNameDelete = $orgTableName . $this->getPrefix('del');
  53.  
  54.             if (!in_array($tableNameCreate, $arrExistingTables)) {
  55.               if ($this->debug) {
  56.                 echo PHP_EOL;
  57.                 echo "==============";
  58.                 echo PHP_EOL;
  59.                 echo "creating {$tableNameCreate}";
  60.                 echo PHP_EOL;
  61.               }
  62.              $this->createTable($tableNameCreate, $arrTableData);
  63.             }
  64.            
  65.             if (in_array($tableNameDelete, $arrExistingTables)) {
  66.             if ($this->debug) {
  67.               echo PHP_EOL;
  68.               echo "==============";
  69.               echo PHP_EOL;
  70.               echo "deleting {$tableNameDelete}";
  71.               echo PHP_EOL;
  72.             }
  73.             // $this->deleteTable($tableNameDelete);
  74.             }
  75.  
  76.             // exit("<pre> \n exited here in " . __FILE__ . " : " . __LINE__ . "</pre>");
  77.             // break;
  78.         } // EOF for loop
  79.     } // EOF of function
  80.  
  81.     public function createTable($tableName, $arrTableData)
  82.     {
  83.       // Create tables
  84.       $arrCreateParams = $arrTableData;
  85.       $arrCreateParams['TableName'] = $tableName;
  86.       $arrLog = [
  87.                     'event' => 'create_table_' . $tableName,
  88.                     'table_name' => $tableName,
  89.                     ];
  90.       $this->putItem($arrLog);
  91.       if (!$this->debug) {
  92.         echo "arrCreateParams";
  93.         echo PHP_EOL;
  94.         print_r($arrCreateParams);
  95.         echo PHP_EOL;
  96.       }
  97.  
  98.       $this->client->createTable($arrCreateParams);
  99.       // $this->client->waitUntil('TableExists', array('TableName' => $tableName));
  100.     } // EOF of createTable
  101.  
  102.     public function deleteTable($tableName)
  103.     {
  104.  
  105.       echo "\nwill delete $tableName\n";
  106.       $this->client->deleteTable(array(
  107.           'TableName' => $tableName
  108.       ));
  109.  
  110.     }
  111.  
  112.     public function putItem($data)
  113.     {
  114.  
  115.       $arr = array(
  116.           'TableName' => 'cron_log',
  117.           'Item' => array(
  118.               'id'      => array('N' => mt_rand()),
  119.               'c_ts'    => array('N' => time()),
  120.               'event_time'   => array('S' => date('Y-m-d H:i:s')),
  121.               'event' => array('S' => $data['event']),
  122.               'table_name' => array('S' => $data['table_name'])
  123.           )
  124.       );
  125.       if ($this->debug) {
  126.         echo "\n Logging\n";
  127.         print_r($arr);
  128.       }
  129.       $this->client->putItem($arr);
  130.  
  131.     }
  132.  
  133.     public function getPrefix($day='today')
  134.     {
  135.       $tz    = new DateTimeZone('UTC');
  136.       $date  = new DateTime(gmdate('Ymd'),$tz);
  137.  
  138.       if ($day === 'yesterday') {
  139.       $date->add(DateInterval::createFromDateString('yesterday'));
  140.       }
  141.       if ($day === 'tomorrow') {
  142.       $date->add(DateInterval::createFromDateString('tomorrow'));
  143.       }
  144.       if ($day === 'del') {
  145.       // $date->add(DateInterval::createFromDateString('tomorrow'));
  146.       $date->add(DateInterval::createFromDateString('-2Days'));
  147.       }
  148.       $retData = $date->format('Ymd');
  149.       ///$retData = '_' . $retData;
  150.       // $retData = '';
  151.       return $retData;
  152.     }
  153.  
  154. }
  155.  
  156. $obj = new DynamoDbCron();
  157. $obj->main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement