Updated IpLocation resolver to be able to provide limits in order to apply sleeps

This commit is contained in:
Alejandro Celaya
2018-08-02 23:02:48 +02:00
parent d54b823c88
commit ed859767a8
4 changed files with 48 additions and 0 deletions

View File

@@ -55,6 +55,7 @@ class ProcessVisitsCommand extends Command
$io = new SymfonyStyle($input, $output);
$visits = $this->visitService->getUnlocatedVisits();
$count = 0;
foreach ($visits as $visit) {
$ipAddr = $visit->getRemoteAddr();
$io->write(\sprintf('%s <info>%s</info>', $this->translator->translate('Processing IP'), $ipAddr));
@@ -65,6 +66,7 @@ class ProcessVisitsCommand extends Command
continue;
}
$count++;
try {
$result = $this->ipLocationResolver->resolveIpLocation($ipAddr);
@@ -85,6 +87,16 @@ class ProcessVisitsCommand extends Command
$this->getApplication()->renderException($e, $output);
}
}
if ($count === $this->ipLocationResolver->getApiLimit()) {
$count = 0;
$seconds = $this->ipLocationResolver->getApiInterval();
$io->note(\sprintf(
$this->translator->translate('IP location resolver limit reached. Waiting %s seconds...'),
$seconds
));
\sleep($seconds);
}
}
$io->success($this->translator->translate('Finished processing all IPs'));