Example #1
0
 /**
  * Apply the callback to the contents of the resource iterator
  *
  * @param int $perBatch The number of records to group per batch transfer
  *
  * @return int Returns the number of iterated resources
  */
 public function apply($perBatch = 50)
 {
     $this->iterated = $this->batches = $batches = 0;
     $that = $this;
     $it = $this->iterator;
     $callback = $this->callback;
     $batch = BatchBuilder::factory()->createBatchesWith(new BatchSizeDivisor($perBatch))->transferWith(new BatchClosureTransfer(function (array $batch) use($that, $callback, &$batches, $it) {
         $batches++;
         $that->dispatch('iterator_batch.before_batch', array('iterator' => $it, 'batch' => $batch));
         call_user_func_array($callback, array($it, $batch));
         $that->dispatch('iterator_batch.after_batch', array('iterator' => $it, 'batch' => $batch));
     }))->autoFlushAt($perBatch)->build();
     $this->dispatch('iterator_batch.created_batch', array('batch' => $batch));
     foreach ($this->iterator as $resource) {
         $this->iterated++;
         $batch->add($resource);
     }
     $batch->flush();
     $this->batches = $batches;
     return $this->iterated;
 }
Example #2
0
 /**
  * Factory for creating a DeleteObjectsBatch
  *
  * @param AwsClientInterface $client Client used to transfer requests
  * @param string             $bucket Bucket that contains the objects to delete
  * @param string             $mfa    MFA token to use with the request
  *
  * @return self
  */
 public static function factory(AwsClientInterface $client, $bucket, $mfa = null)
 {
     $batch = BatchBuilder::factory()->createBatchesWith(new BatchSizeDivisor(1000))->transferWith(new DeleteObjectsTransfer($client, $bucket, $mfa))->build();
     return new self($batch);
 }