|
|
- <?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");
- }
- }
-
- }
|