I tried this also: https://github.com/bushbaby/BsbDoctrineReconnect

But that did not make a difference.

Pieter

Op vrijdag 16 mei 2014 17:09:52 UTC+2 schreef Pieter Vogelaar:
>
> Hi, 
>
> The following code below is an update method that belongs to a batch 
> process. It iterates over the Supplier entity and fetches 10 supplier ids 
> from the database per batch.
> This code works okay, but on a variable moment the output of 
> getArrayResult() keeps returning zero items. 
>
> If I start the batch script again it starts fetching new items. I can't 
> figure out what the problem is here?! I get no errors or exceptions, just 
> zero items.
>
>
> public function update()
>     {
>         $this->console->writeLine(sprintf('Started update - %s', 
> date('Y-m-d H:i:s')), Color::YELLOW);
>
>         if ($this->debug) {
>             $this->console->writeLine(
>                 sprintf('(memory usage: ' . round(memory_get_usage(true) / 
> 1024 / 1024, 2) . ' MB)')
>             );
>         }
>
>         $offset = 0;
>         $limit = 10;
>         $failCount = 0;
>         do {
>             $supplierIds = array();
>
>             $oneWeekAgo = new \DateTime();
>             $oneWeekAgo->sub(new \DateInterval('P7D'));
>
>             $suppliers = $this->entityManager->createQueryBuilder()
>                 ->select('s.id')
>                 ->from('Application\Entity\Supplier', 's')
>                 ->innerJoin('s.websites', 'w', Join::WITH, 'w.isMain = 
> true')
>                 ->where('s.isMember = false')
>                 ->andWhere('s.profileUpdated IS NULL OR s.profileUpdated < 
> :oneWeekAgo')
>                 ->setParameter('oneWeekAgo', $oneWeekAgo)
>                 ->orderBy('s.profileUpdated', 'ASC')
>                 ->setFirstResult($offset)
>                 ->setMaxResults($limit)
>                 ->getQuery()->getArrayResult()
>                 ;
>
>             foreach ($suppliers as $supplier) {
>                 $supplierIds[] = $supplier['id'];
>             }
>
>             $supplierIdsCount = count($supplierIds);
>
>             if ($supplierIdsCount > 0) {
>                 $suppliers = $this->entityManager->createQueryBuilder()
>                     ->select('s')
>                     
> ->from($this->entityManager->resolveEntity(Entity::SUPPLIER), 's')
>                     ->where('s.id IN 
> (:supplierIds)')->setParameter('supplierIds', $supplierIds)
>                     ->getQuery()->getResult()
>                 ;
>
>                 foreach ($suppliers as $supplier) {
>                     $this->updateProfile($supplier);
>                 }
>
>                 $this->entityManager->flush();
>                 $this->entityManager->clear();
>
>                 $this->console->writeLine('End of batch - supplier count 
> in this batch "' . $supplierIdsCount . '"',
>                     Color::YELLOW);
>
>                 sleep(2);
>                 $failCount = 0;
>                 $offset += $limit;
>             } elseif ($supplierIdsCount === 0 && $failCount < 3) {
>                 $this->console->writeLine('End of batch - supplier count 
> in this batch "' . $supplierIdsCount . '"'
>                     . ' - trying again...', Color::YELLOW);
>
>                 $failCount++;
>                 $supplierIdsCount = $limit;
>             }
>
>             if ($this->debug) {
>                 $this->console->writeLine(
>                     sprintf('(memory usage: ' . 
> round(memory_get_usage(true) / 1024 / 1024, 2) . ' MB)')
>                 );
>             }
>         } while ($supplierIdsCount == $limit);
>
>         $this->console->writeLine(sprintf('Finished import - %s', 
> date('Y-m-d H:i:s')), Color::YELLOW);
>     }
>

-- 
You received this message because you are subscribed to the Google Groups 
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to