Open Journal Systems  3.3.0
BatchRequestTransfer.php
1 <?php
2 
3 namespace Guzzle\Batch;
4 
9 
15 {
17  protected $batchSize;
18 
24  public function __construct($batchSize = 50)
25  {
26  $this->batchSize = $batchSize;
27  }
28 
33  public function createBatches(\SplQueue $queue)
34  {
35  // Create batches by client objects
36  $groups = new \SplObjectStorage();
37  foreach ($queue as $item) {
38  if (!$item instanceof RequestInterface) {
39  throw new InvalidArgumentException('All items must implement Guzzle\Http\Message\RequestInterface');
40  }
41  $client = $item->getClient();
42  if (!$groups->contains($client)) {
43  $groups->attach($client, array($item));
44  } else {
45  $current = $groups[$client];
46  $current[] = $item;
47  $groups[$client] = $current;
48  }
49  }
50 
51  $batches = array();
52  foreach ($groups as $batch) {
53  $batches = array_merge($batches, array_chunk($groups[$batch], $this->batchSize));
54  }
55 
56  return $batches;
57  }
58 
59  public function transfer(array $batch)
60  {
61  if ($batch) {
62  reset($batch)->getClient()->send($batch);
63  }
64  }
65 }
Guzzle\Batch
Definition: AbstractBatchDecorator.php:3
Guzzle\Http\Message\RequestInterface
Definition: lib/vendor/guzzle/guzzle/src/Guzzle/Http/Message/RequestInterface.php:16
Guzzle\Batch\BatchTransferInterface
Definition: BatchTransferInterface.php:8
Guzzle\Batch\BatchRequestTransfer\$batchSize
$batchSize
Definition: BatchRequestTransfer.php:20
Guzzle\Batch\BatchRequestTransfer
Definition: BatchRequestTransfer.php:14
Guzzle\Common\Exception\InvalidArgumentException
Definition: lib/vendor/guzzle/guzzle/src/Guzzle/Common/Exception/InvalidArgumentException.php:5
Guzzle\Batch\BatchRequestTransfer\createBatches
createBatches(\SplQueue $queue)
Definition: BatchRequestTransfer.php:36
Guzzle\Batch\BatchRequestTransfer\__construct
__construct($batchSize=50)
Definition: BatchRequestTransfer.php:27
Guzzle\Batch\BatchRequestTransfer\transfer
transfer(array $batch)
Definition: BatchRequestTransfer.php:62
Guzzle\Batch\BatchDivisorInterface
Definition: BatchDivisorInterface.php:8