Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2014
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.07 KB | None | 0 0
  1. #!/bin/env php
  2. <?php
  3.  
  4. //define('DEV',true);
  5. date_default_timezone_set('Europe/Paris');
  6. require_once(dirname($argv[0]).'/../global.php');
  7. require_once(LIB_CONSTANT_BaseDir.'/lib-core/debug/debug.php');
  8. require_once(LIB_CONSTANT_BaseDir.'/lib-core/log/log.php');
  9. require_once(LIB_CONSTANT_BaseDir.'/lib/banner/banner.php');
  10. require_once(LIB_CONSTANT_BaseDir.'/lib/tracker/tracker.php');
  11. require_once(LIB_CONSTANT_BaseDir.'/lib/stat_file/stat_file.php');
  12. require_once(LIB_CONSTANT_BaseDir.'/models/tool_view/tool_view.php');
  13. require_once(LIB_CONSTANT_BaseDir.'/models/tool_hit/tool_hit.php');
  14. require_once(LIB_CONSTANT_BaseDir.'/models/affiliate/affiliate.php');
  15. require_once(LIB_CONSTANT_BaseDir.'/models/adspace/adspace.php');
  16. require_once(LIB_CONSTANT_BaseDir.'/models/affiliate_tracker/affiliate_tracker.php');
  17. require_once(LIB_CONSTANT_BaseDir.'/lib/ipconverter_new/ipconverter.php');
  18. require_once(LIB_CONSTANT_BaseDir.'/lib/profiler/profiler.php');
  19.  
  20. function insertStat($data) {
  21.     $ToolHit = new ToolHit();
  22.     $ToolView = new ToolView();
  23.     $AffiliateTracker = new AffiliateTracker();
  24.     $Adspace = new Adspace();
  25.     $ToolView_fields = array( 'id', 'id_affiliate', 'id_affiliate_tracker', 'id_tool', 'id_product', 'id_niche', 'id_adspace', 'id_category', 'id_website', 'country_code', 'view_date', 'view', '`unique`');
  26.     $ToolHit_fields = array( 'id', 'id_affiliate', 'id_affiliate_tracker', 'id_tool', 'id_product', 'id_niche', 'id_adspace', 'id_category', 'id_website', 'country_code', 'hit_date', 'hit', '`unique`');
  27.     $addhits = 0;
  28.     $addviews = 0;
  29.     foreach($data as $date => $data1) {
  30.         foreach($data1 as $id_affiliate => $data2) {
  31.             $add_views = array();
  32.             $add_hits = array();
  33.             foreach($data2 as $id_adspace => $data3) {
  34.                 // Add Adspace info
  35.                 $adspace = $Adspace->getById($id_adspace);
  36.                 if(is_null($adspace)) {
  37.                     continue;
  38.                 }
  39.                 $id_category = $adspace['id_category'];
  40.                 $id_website = $adspace['id_website'];
  41.                 foreach($data3 as $id_product => $data4) {
  42.                         foreach($data4 as $id_niche => $data5) {
  43.                                 foreach($data5 as $id_tool => $data6) {
  44.                                         foreach($data6 as $country_code => $data7) {
  45.                                                 foreach($data7 as $tracker => $actions) {
  46.                                                         // Add tracker info
  47.                                                         $id_affiliate_tracker = $AffiliateTracker->GetOrAddIdAffiliateTracker($id_affiliate,$tracker);
  48.                                                         if(!$id_affiliate_tracker) {
  49.                                                                 continue;
  50.                                                         }
  51.                                                         $views = $actions['views'];
  52.                                                         $hits = $actions['hits'];
  53.                                                         if($views > 0){
  54.                                                                 //Add view
  55.                                                                 $result = $ToolView->UpdateView($id_affiliate,$id_affiliate_tracker,$id_product,$id_niche,$id_adspace,$id_category,$id_website,$id_tool,$country_code,$views,$date);
  56.                                                                 if($result === false) {
  57.  
  58.                                                                 } else if (!$result) {
  59.                                                                         // Add needed
  60.                                                                         $addviews++;
  61.                                                                         $add_views[] = array( 'NULL',
  62.                                                                                         $id_affiliate,
  63.                                                                                         $id_affiliate_tracker,
  64.                                                                                         $id_tool,
  65.                                                                                         $id_product,
  66.                                                                                         $id_niche,
  67.                                                                                         $id_adspace,
  68.                                                                                         $id_category,
  69.                                                                                         $id_website,
  70.                                                                                         '"'.$country_code.'"',
  71.                                                                                         '"'.$date.'"',
  72.                                                                                         $views,
  73.                                                                                         0);
  74.                                                                 }
  75.                                                         }
  76.                                                         if($hits > 0) {
  77.                                                                 //Add hit
  78.                                                                 $result = $ToolHit->UpdateHit($id_affiliate,$id_affiliate_tracker,$id_product,$id_niche,$id_adspace,$id_category,$id_website,$id_tool,$country_code,$hits,$date);
  79.                                                                 if($result === false) {
  80.  
  81.                                                                 } else if (!$result) {
  82.                                                                         // Add needed
  83.                                                                         $addhits++;
  84.                                                                         $add_hits[] = array( 'NULL',
  85.                                                                                         $id_affiliate,
  86.                                                                                         $id_affiliate_tracker,
  87.                                                                                         $id_tool,
  88.                                                                                         $id_product,
  89.                                                                                         $id_niche,
  90.                                                                                         $id_adspace,
  91.                                                                                         $id_category,
  92.                                                                                         $id_website,
  93.                                                                                         '"'.$country_code.'"',
  94.                                                                                         '"'.$date.'"',
  95.                                                                                         $hits,
  96.                                                                                         0);
  97.                                                                 }
  98.                                                         }
  99.                                                 }
  100.                                         }
  101.                                 }
  102.                         }
  103.                 }
  104.             }
  105.             if($addviews > 0) {
  106.                 $result = $ToolView->AddViews($add_views,$ToolView_fields);
  107.                 if(!$result) {
  108.                    
  109.                 }
  110.                 $addviews = 0;
  111.             }
  112.             if($addhits > 0) {
  113.                 $result = $ToolHit->AddHits($add_hits,$ToolHit_fields);
  114.                 if(!$result) {
  115.                    
  116.                 }
  117.                 $addhits = 0;
  118.             }
  119.         }
  120.     }
  121. }
  122.  
  123. $base_dir = "/home/sites/kk/stats";
  124. if(defined('DEV')) $base_dir .= '/test';
  125. //Directory Setup
  126. $processed_dir = $base_dir.'/log.processed';
  127. $processed_time = strtotime('- 1 days');
  128. $processed_date = date('Y-m-d',$processed_time);
  129. if(isset($argv[1])) {
  130.     $processed_date = $argv[1];
  131. }
  132. $processed_date_folder = str_replace('-','/',$processed_date);
  133. $processed_dir .= '/'.$processed_date_folder;
  134. if (!is_dir($processed_dir)) {
  135.     LOG_Warn('No stats for this day : '.$processed_date);
  136.     exit;
  137. }
  138.  
  139. //Models instantiation
  140. $Affiliate = new AffiliateKCCore();
  141. $IpConverter = new IpConverter();
  142. if ($dh_base = opendir($processed_dir)) {
  143.     $file_data = array();
  144.     $valid = 0;
  145.     $total = 0;
  146.     while (($file = readdir($dh_base)) !== false) {
  147.         if ($file != "." && $file != ".." && preg_match('/[0-9]+$/',$file)) {
  148.             $file_path = $processed_dir.'/'.$file;
  149.             if(is_file($file_path)) {
  150.                 //$file_error = $error_dir.'/'.@date('Y-m-d',$time).'.error.log';
  151.                 $handle = @fopen($file_path, "r");
  152.                 if ($handle) {
  153.                     while (($line = fgets($handle)) !== false) {
  154.                         $total++;
  155.                         $view = 0;
  156.                         $hit = 0;
  157.                         $line = rtrim($line);
  158.  
  159.                         $data = StatFile::extractDataForToolsStats($line);
  160.                         $timestamp = $data['timestamp'];
  161.                         $banner = $data['banner'];
  162.                         $tracker = $data['tracker'];
  163.                         $id_product = $data['id_product'];
  164.                         $id_adspace = $data['id_adspace'];
  165.                         $id_tool = $data['id_tool'];
  166.                         $ip = $data['ip'];
  167.                         $type = $data['type'];
  168.                         $view = $data['view']; 
  169.                         $hit = $data['hit'];   
  170.                         $id_niche = $data['id_niche'];
  171.                         $origin = $data['origin'];
  172.  
  173.                         /*echo 'Timestamp : '.$timestamp."\n";
  174.                           echo 'Banner : '.$banner."\n";
  175.                           echo 'Tracker : '.$tracker."\n";
  176.                           echo 'Id Product : '.$id_product."\n";
  177.                           echo 'Id Adspace : '.$id_adspace."\n";
  178.                           echo 'Id Tool : '.$id_tool."\n";
  179.                           echo 'IP : '.$ip."\n";
  180.                           echo 'Type : '.$type."\n";
  181.                           echo 'View : '.$view."\n";
  182.                           echo 'Hit : '.$hit."\n";*/
  183.  
  184.                         $banner = BANNER_GetCleanBanner($banner);
  185.                         if(empty($id_adspace) || empty($id_product) || empty($banner) || empty($tracker) || empty($id_niche)) {
  186.                             continue;
  187.                         }
  188.                         if(!ctype_digit($id_adspace) || !ctype_digit($id_product) || !ctype_digit($banner)) {
  189.                             continue;
  190.                         }
  191.                         $date = @date('Y-m-d',$timestamp);
  192.                        
  193.                         // Validate affiliate
  194.                         $affiliate = $Affiliate->getAffiliateFromBanner($banner);
  195.                         if(!$affiliate) {
  196.                             continue;
  197.                         }
  198.                         $id_affiliate = $affiliate['id'];
  199.  
  200.                         if(empty($id_tool)) $id_tool = 0;  
  201.                         $tracker = str_replace('~#','|',$tracker);
  202.                         $tracker = TRACKER_MrProper($tracker,2);
  203.                         $country_code = $IpConverter->GetCountryCode($ip);
  204.                         if(!$country_code) {
  205.                             $country_code = 'NC';
  206.                         }
  207.                        
  208.                         if(isset($file_data[$date])) {
  209.                                 if(isset($file_data[$date][$id_affiliate])){
  210.                                         if(isset($file_data[$date][$id_affiliate][$id_adspace])){
  211.                                                 if(isset($file_data[$date][$id_affiliate][$id_adspace][$id_product])){
  212.                                                         if(isset($file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche])) {
  213.                                                             if(isset($file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche][$id_tool])) {
  214.                                                                 if(isset($file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche][$id_tool][$country_code])) {
  215.                                                                         if(isset($file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche][$id_tool][$country_code][$tracker])) {
  216.                                                                                 $file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche][$id_tool][$country_code][$tracker]['views'] += $view;
  217.                                                                                 $file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche][$id_tool][$country_code][$tracker]['hits'] += $hit;
  218.                                                                         } else {
  219.                                                                                 $file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche][$id_tool][$country_code][$tracker] = array('views' => $view,'hits' => $hit);
  220.                                                                         }
  221.                                                                 } else {
  222.                                                                         $file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche][$id_tool][$country_code] = array($tracker => array('views' => $view,'hits' => $hit));
  223.                                                                 }
  224.                                                         }else{
  225.                                                                 $file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche][$id_tool] = array($country_code =>
  226.                                                                                 array($tracker =>
  227.                                                                                         array('views' => $view,'hits' => $hit)
  228.                                                                                      )
  229.                                                                                 );
  230.                                                         }
  231.                                                     } else {
  232.                                                             $file_data[$date][$id_affiliate][$id_adspace][$id_product][$id_niche] = array($id_tool =>
  233.                                                                             array($country_code =>
  234.                                                                                     array($tracker =>
  235.                                                                                             array('views' => $view,'hits' => $hit)
  236.                                                                                          )
  237.                                                                                  )
  238.                                                                             ); 
  239.                                                     }
  240.                                                 } else {
  241.                                                         $file_data[$date][$id_affiliate][$id_adspace][$id_product] =  array($id_niche =>
  242.                                                                         array($id_tool =>
  243.                                                                                 array($country_code =>
  244.                                                                                         array($tracker =>
  245.                                                                                                 array('views' => $view,'hits' => $hit)
  246.                                                                                              )
  247.                                                                                      )
  248.                                                                              )
  249.                                                                         ); 
  250.                                                 }
  251.                                         } else {
  252.                                                 $file_data[$date][$id_affiliate][$id_adspace] = array($id_product =>
  253.                                                                 array($id_niche =>
  254.                                                                         array($id_tool =>
  255.                                                                                 array($country_code =>
  256.                                                                                         array($tracker =>
  257.                                                                                                 array('views' => $view,'hits' => $hit)
  258.                                                                                              )
  259.                                                                                      )
  260.                                                                              )
  261.                                                                      )
  262.                                                                 );
  263.                                         }
  264.                                 } else {
  265.                                         $file_data[$date][$id_affiliate] = array($id_adspace =>        
  266.                                                         array($id_product =>
  267.                                                                 array($id_niche =>
  268.                                                                         array($id_tool =>
  269.                                                                                 array($country_code =>
  270.                                                                                         array($tracker =>
  271.                                                                                                 array('views' => $view,'hits' => $hit)
  272.                                                                                              )
  273.                                                                                      )
  274.                                                                              )
  275.                                                                      )
  276.                                                              )
  277.                                                         );
  278.                                 }
  279.                         } else {
  280.                                 $file_data[$date] = array($id_affiliate => array($id_adspace =>
  281.                                                         array($id_product =>
  282.                                                                 array($id_niche =>
  283.                                                                     array($id_tool =>
  284.                                                                         array($country_code =>
  285.                                                                                 array($tracker =>
  286.                                                                                         array('views' => $view,'hits' => $hit)
  287.                                                                                      )
  288.                                                                              )
  289.                                                                      )
  290.                                                                 )
  291.                                                              )
  292.                                                         )
  293.                                                 );
  294.                         }
  295.                         $valid++;
  296.                         if (intval((memory_get_usage() / 1024) / 1024) >= 100) {   
  297.                             LOG_Info('Force Insert stat due to memory usage !');
  298.                             insertStat($file_data);
  299.                             $file_data = array();
  300.                         }
  301.                     }//End While Lines
  302.                     if (!feof($handle)) {
  303.                         LOG_Error('TYPE 0 : fgets failed '.$file_path);
  304.                         echo('TYPE 0 : fgets failed '.$file_path."\n");
  305.                     }
  306.                     fclose($handle);
  307.                     //End fopen success
  308.                 }else {
  309.                     LOG_Error('TYPE 0 : Cannot read file '.$file_path);
  310.                     echo('TYPE 0 : Cannot read file '.$file_path."\n");
  311.                 }
  312.             }
  313.         }
  314.     }
  315.     closedir($dh_base);
  316.     echo "$valid/$total\n";
  317.     if(!empty($file_data)) {
  318.         insertStat($file_data);
  319.         $file_data = array();
  320.     }
  321. }else{
  322.     die('ERROR : Cannot open directory : '.$processed_dir."\n");
  323. }
  324. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement