<?php
							 | 
						|
								namespace App\Console\Commands;
							 | 
						|
								use Illuminate\Console\Command;
							 | 
						|
								use Laravel\Lumen\Routing\DispatchesJobs;
							 | 
						|
								use Log;
							 | 
						|
								use DateTime, DateTimeZone;
							 | 
						|
								
							 | 
						|
								class Cleanfile extends Command {
							 | 
						|
								
							 | 
						|
								  protected $signature = 'clean:file {in} {out}';
							 | 
						|
								  protected $description = 'Discard duplicate out of order data from a file';
							 | 
						|
								
							 | 
						|
								  public function handle() {
							 | 
						|
								    $in = $this->argument('in');
							 | 
						|
								    $out = $this->argument('out');
							 | 
						|
								
							 | 
						|
								    $fp = @fopen($in, 'r');
							 | 
						|
								    $outf = @fopen($out, 'w');
							 | 
						|
								    if($fp && $outf) {
							 | 
						|
								
							 | 
						|
								      $last = false;
							 | 
						|
								      while(($line = fgets($fp)) !== false) {
							 | 
						|
								        $cur = new DateTime(substr($line, 0, 26), new DateTimeZone('UTC'));
							 | 
						|
								
							 | 
						|
								        if(!$last) {
							 | 
						|
								          $last = new DateTime(substr($line, 0, 26), new DateTimeZone('UTC'));
							 | 
						|
								          fwrite($outf, $line);
							 | 
						|
								        } else {
							 | 
						|
								          if((double)$cur->format('U.u') > (double)$last->format('U.u')) {
							 | 
						|
								            fwrite($outf, $line);
							 | 
						|
								            $last = new DateTime(substr($line, 0, 26), new DateTimeZone('UTC'));
							 | 
						|
								          } else {
							 | 
						|
								            Log::info("Discarding line");
							 | 
						|
								          }
							 | 
						|
								        }
							 | 
						|
								      }
							 | 
						|
								      fclose($fp);
							 | 
						|
								      fclose($outf);
							 | 
						|
								
							 | 
						|
								    } else {
							 | 
						|
								      Log::error("Could not find input file");
							 | 
						|
								    }
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								}
							 |