| @ -0,0 +1,45 @@ | |||||
| <?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"); | |||||
| } | |||||
| } | |||||
| } | |||||