Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.71 KB | None | 0 0
  1. <?php
  2. // Define the base file path
  3. define ('BASE_PATH',  dirname (dirname (dirname (__FILE__) ) ) . '/');
  4.  
  5. require_once (BASE_PATH . 'bootstrap.php');
  6.  
  7. echo 'Starting to process stats: ' . date ('r') . "\n";
  8.  
  9. /* Start timer */
  10. $time = microtime ();
  11. $time = explode (' ', $time);
  12. $time = $time[1] + $time[0];
  13. $start = $time;
  14.  
  15. // Get all stores
  16. $sql = "SELECT `s`.`shop_id`, `s`.`shopify_domain`, `s`.`iana_timezone`, SUBDATE(CONVERT_TZ(CONCAT(CURDATE(), ' 23:59:59'), 'UTC', `s`.`iana_timezone`), 1) AS `yesterday`
  17. FROM `shop` `s`
  18. INNER JOIN `stats` ON `stats`.`shop_id` = `s`.`shop_id`
  19. WHERE `s`.`processing_stats` = 0
  20. GROUP BY `s`.`shop_id`
  21. ORDER BY `s`.`shop_id`";
  22. foreach ($db1->query ($sql) as $data) {
  23.     $shop_id = $data['shop_id'];
  24.     $shopify_domain = $data['shopify_domain'];
  25.     $shop_timezone = $data['iana_timezone'];
  26.     $yesterday = $data['yesterday'];
  27.  
  28.     // echo 'Processing stats for ' . $shopify_domain . ' - ' . $shop_id . ' - ' . $shop_timezone . ' - ' . $yesterday . "\n";
  29.  
  30.     // Set processing flag
  31.     $sql = "UPDATE `shop` SET `processing_stats` = 1 WHERE `shop_id` = ?";
  32.     $stmt = $db1->prepare ($sql);
  33.     $stmt->execute ([$shop_id]);
  34.     $stmt = null;
  35.  
  36.     // process views
  37.     $sql = "SELECT DATE(CONVERT_TZ(`created`, 'UTC', ?)) AS `date`, COUNT(*) AS `views`
  38.     FROM `stats`
  39.     WHERE `created` <= ?
  40.     AND `shop_id` = ?
  41.     AND `click` = 0
  42.     AND `conversion` = 0
  43.     GROUP BY DATE(CONVERT_TZ(`created`, 'UTC', ?))
  44.     ORDER BY DATE(CONVERT_TZ(`created`, 'UTC', ?))";
  45.     $stmt = $db1->prepare ($sql);
  46.     $stmt->execute ([$shop_timezone, $yesterday, $shop_id, $shop_timezone, $shop_timezone]);
  47.     while ($data2 = $stmt->fetch ()) {
  48.         $date = $data2['date'];
  49.         $views = $data2['views'];
  50.  
  51.         // echo 'Inserting views for ' . $date . ' . "\n";
  52.  
  53.         // add the daily view stats
  54.         $sql = "INSERT INTO `stats_daily`
  55.             (`shop_id`, `date`, `views`)
  56.         VALUES
  57.             (?, ?, ?)
  58.         ON DUPLICATE KEY UPDATE
  59.             `views` = `views` + ?";
  60.         $stmt2 = $db1->prepare ($sql);
  61.         $stmt2->execute ([$shop_id, $date, $views, $views]);
  62.         $stmt2 = null;
  63.     }
  64.     $stmt = null;
  65.  
  66.     // process clicks
  67.     $sql = "SELECT DATE(CONVERT_TZ(`created`, 'UTC', ?)) AS `date`, COUNT(*) AS `clicks`
  68.     FROM `stats`
  69.     WHERE `created` <= ?
  70.     AND `shop_id` = ?
  71.     AND `click` = 1
  72.     AND `conversion` = 0
  73.     GROUP BY DATE(CONVERT_TZ(`created`, 'UTC', ?))
  74.     ORDER BY DATE(CONVERT_TZ(`created`, 'UTC', ?))";
  75.     $stmt = $db1->prepare ($sql);
  76.     $stmt->execute ([$shop_timezone, $yesterday, $shop_id, $shop_timezone, $shop_timezone]);
  77.     while ($data2 = $stmt->fetch ()) {
  78.         $date = $data2['date'];
  79.         $clicks = $data2['clicks'];
  80.  
  81.         //echo 'Inserting clicks for ' . $date . "\n";
  82.  
  83.         // add the daily click stats
  84.         $sql = "INSERT INTO `stats_daily`
  85.             (`shop_id`, `date`, `clicks`)
  86.         VALUES
  87.             (?, ?, ?)
  88.         ON DUPLICATE KEY UPDATE
  89.             `clicks` = `clicks` + ?";
  90.         $stmt2 = $db1->prepare ($sql);
  91.         $stmt2->execute ([$shop_id, $date, $clicks, $clicks]);
  92.         $stmt2 = null;
  93.     }
  94.     $stmt = null;
  95.  
  96.     // process conversions
  97.     $sql = "SELECT DATE(CONVERT_TZ(`created`, 'UTC', ?)) AS `date`, COUNT(*) AS `conversions`
  98.     FROM `stats`
  99.     WHERE `created` <= ?
  100.     AND `shop_id` = ?
  101.     AND `click` = 0
  102.     AND `conversion` = 1
  103.     GROUP BY DATE(CONVERT_TZ(`created`, 'UTC', ?))
  104.     ORDER BY DATE(CONVERT_TZ(`created`, 'UTC', ?))";
  105.     $stmt = $db1->prepare ($sql);
  106.     $stmt->execute ([$shop_timezone, $yesterday, $shop_id, $shop_timezone, $shop_timezone]);
  107.     while ($data2 = $stmt->fetch ()) {
  108.         $date = $data2['date'];
  109.         $conversions = $data2['conversions'];
  110.  
  111.         //echo 'Inserting conversions for ' . $date . ' . "\n";
  112.  
  113.         // add the daily conversion stats
  114.         $sql = "INSERT INTO `stats_daily`
  115.             (`shop_id`, `date`, `conversions`)
  116.         VALUES
  117.             (?, ?, ?)
  118.         ON DUPLICATE KEY UPDATE
  119.             `conversions` = `conversions` + ?";
  120.         $stmt2 = $db1->prepare ($sql);
  121.         $stmt2->execute ([$shop_id, $date, $conversions, $conversions]);
  122.         $stmt2 = null;
  123.     }
  124.     $stmt = null;
  125.  
  126.     //echo 'Deleting stats older than ' . $yesterday . ' . "\n";
  127.  
  128.     // delete the stats before today
  129.     $sql = "DELETE FROM `stats` WHERE `created` <= ? AND `shop_id` = ?";
  130.     $stmt = $db1->prepare ($sql);
  131.     $stmt->execute ([$yesterday, $shop_id]);
  132.     $stmt = null;
  133.  
  134.     // Set processing complete flag
  135.     $sql = "UPDATE `shop` SET `processing_stats` = 0 WHERE `shop_id` = ?";
  136.     $stmt = $db1->prepare ($sql);
  137.     $stmt->execute ([$shop_id]);
  138.     $stmt = null;
  139. }
  140.  
  141. $time = microtime ();
  142. $time = explode (' ', $time);
  143. $time = $time[1] + $time[0];
  144. $finish = $time;
  145. $total_time = round (($finish - $start), 4);
  146.  
  147. // Delete all jobs older than one day
  148. $sql = "DELETE FROM `job` WHERE `status` = 'complete' AND `created` < DATE_SUB(NOW(), INTERVAL 1 DAY)";
  149. $db1->query ($sql);
  150.  
  151. echo 'Completed processing stats in ' . $total_time . ' seconds' . "\n";
  152.  
  153. // Close the DB connection
  154. $db1 = null;
  155. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement