Commit 4e8aee083583a422130c8f88228590a0fe2cd08b
Exists in
master
and in
2 other branches
Corrige erro nas impressoras e bug da coleta
Showing
1 changed file
with
38 additions
and
2 deletions
Show diff stats
Controller/PrinterController.php
| ... | ... | @@ -603,12 +603,47 @@ class PrinterController extends Controller |
| 603 | 603 | ->getForm(); |
| 604 | 604 | } |
| 605 | 605 | |
| 606 | + /** | |
| 607 | + * Totalize results by limit and offset parameters | |
| 608 | + * | |
| 609 | + * @return Response | |
| 610 | + */ | |
| 606 | 611 | public function totalizer() |
| 607 | 612 | { |
| 613 | + $n_printers = $this->em->createQuery('SELECT count(p) FROM CocarBundle:Printer p')->getSingleScalarResult(); | |
| 614 | + | |
| 615 | + $limit = 1000; | |
| 616 | + $iterations = (int)($n_printers / 1000); | |
| 617 | + $iterations = $iterations + 1; | |
| 618 | + | |
| 619 | + $i = 0; | |
| 620 | + while ($i < $iterations) { | |
| 621 | + // O objetivo é executar a coleta a cada 1000 impressoras | |
| 622 | + $offset = $limit * $i; | |
| 623 | + $this->selectPrinters($limit, $offset); | |
| 624 | + $i = $i + 1; | |
| 625 | + } | |
| 626 | + | |
| 627 | + | |
| 628 | + return new Response(); | |
| 629 | + } | |
| 630 | + | |
| 631 | + /** | |
| 632 | + * Select printers by offset and limit | |
| 633 | + */ | |
| 634 | + private function selectPrinters($limit, $offset) { | |
| 608 | 635 | ini_set('memory_limit', '1024M'); |
| 609 | 636 | gc_enable(); |
| 610 | 637 | |
| 611 | - $printers = $this->em->getRepository('CocarBundle:Printer')->findAll(); | |
| 638 | + $printers = $this->em | |
| 639 | + ->createQuery('SELECT p FROM CocarBundle:Printer p ORDER BY p.id desc') | |
| 640 | + ->setMaxResults($limit) | |
| 641 | + ->setFirstResult($offset) | |
| 642 | + ->getResult(); | |
| 643 | + | |
| 644 | + //$printers = $this->em->getRepository('CocarBundle:Printer')->findAll(); | |
| 645 | + | |
| 646 | + $this->get('logger')->info("Executando coleta de $limit impressoras começando no número $offset"); | |
| 612 | 647 | |
| 613 | 648 | foreach($printers as $printer) |
| 614 | 649 | { |
| ... | ... | @@ -617,6 +652,8 @@ class PrinterController extends Controller |
| 617 | 652 | $community = $printer->getCommunitySnmpPrinter(); |
| 618 | 653 | $host = $printer->getHost(); |
| 619 | 654 | |
| 655 | + $this->get('logger')->info("Coletando impressora $host"); | |
| 656 | + | |
| 620 | 657 | $com = "snmpwalk -O qv -v 1 -c $community $host 1.3.6.1.2.1.43.10.2.1.4.1.1"; |
| 621 | 658 | |
| 622 | 659 | if($outPut = shell_exec($com)) |
| ... | ... | @@ -631,7 +668,6 @@ class PrinterController extends Controller |
| 631 | 668 | $this->get('logger')->error("Erro na coleta da impressora $host \n".$e->getMessage()); |
| 632 | 669 | } |
| 633 | 670 | } |
| 634 | - return new Response(); | |
| 635 | 671 | } |
| 636 | 672 | |
| 637 | 673 | /** | ... | ... |