| Recommend this page to a friend! | 
|  Download | 
| Info | Documentation |  Files |  Install with Composer |  Download | Reputation | Support forum | Blog | Links | 
| Ratings | Unique User Downloads | Download Rankings | ||||
| Not yet rated by the users | Total: 61 | All time:  10,489 This week: 73  | ||||
| Version | License | PHP version | Categories | |||
| circular-queue 1.0 | MIT/X Consortium ... | 7 | Databases, Tools, Data types, PHP 7 | 
| Description | Author | |
| This package can manage circular job queues stored in Redis. | 
Circular Queue with redis implementation for distribution of shared data Useful for resource balancing, parsing
composer require insolita/circular-queue
  $q = new SimpleCircularQueue(
       'queueName',
        new AsIsConverter(),              // insolita\cqueue\Contracts\PayloadConverterInterface
        new OnEmptyQueueException(),      // insolita\cqueue\Contracts\EmptyQueueBehaviorInterface
        new PredisStorage(new Client())   // insolita\cqueue\Contracts\StorageInterface
  );
  $q->fill(['alpha', 'beta', 'gamma', 'delta']);
  $q->next(); //alpha
  $q->next(); //beta
  $q->next(); //gamma
  $q->next(); //delta
  $q->next(); //alpha
  $q->next(); //beta
  $q->next(); //gamma
  $q->countQueued();//4
  $q->purgeQueued();//clear queue
  ...
  $q = new CircularQueue(
       'queueName',
        new AsIsConverter(),              // insolita\cqueue\Contracts\PayloadConverterInterface
        new OnEmptyQueueException(),      // insolita\cqueue\Contracts\EmptyQueueBehaviorInterface
        new PredisStorage(new Client())   // insolita\cqueue\Contracts\StorageInterface
  );
    $q->fill(['alpha', 'beta', 'gamma', 'delta']);
    $item = $q->pull(); //alpha - extract item from queue
    $q->resume($item); // resume item in queue
    $item1 = $q->pull(60); //Item will be resumed in queue after 60 seconds
    $item2 = $q->pull();
    $q->resume($item2, 120); //Item will be resumed in queue after 120 seconds
    $item3 = $q->pull();
    $q->resumeAt($item3, time()+100500); //Item will be resumed  after concrete timestamp
    $q->countTotal()   //4
    $q->countQueued()  //1
    $q->countDelayed() //3
    $q->listDelayed()  // ['beta', 'gamma', 'delta']
    $q->resumeAllDelayed(); //Force resume all delayed in queue
    $q->purgeDelayed(); //Remove all delayed
   $q1 = new CircularQueue(
                                 'firstQueue',
                                  new SerializableConverter(),
                                  new OnEmptyQueueException(),
                                  new PhpRedisStorage(new \Redis())
                            );
   $manager = new Manager([$q1]);
   $manager->add(new CircularQueue(
                           'secondQueue',
                            new SerializableConverter(),
                            new OnEmptyQueueException(),
                            new PhpRedisStorage(new \Redis())
                      ));
   $manager->queue('firstQueue')->fill([...]);
   $manager->queue('secondQueue')->fill([...]);
   ...
   $manager->remove('firstQueue');
|  Files (27) | 
| File | Role | Description | ||
|---|---|---|---|---|
|  src (3 files, 5 directories) | ||||
|  tests (2 directories) | ||||
|    .travis.yml | Data | Auxiliary data | ||
|    composer.json | Data | Auxiliary data | ||
|    phpunit.xml | Data | Auxiliary data | ||
|    README.md | Doc. | Documentation | ||
|  Files (27) | / | src | 
| File | Role | Description | ||
|---|---|---|---|---|
|  Behaviors (2 files) | ||||
|  Contracts (5 files) | ||||
|  Converters (2 files) | ||||
|  Mixins (1 file) | ||||
|  Storage (2 files) | ||||
|  CircularQueue.php | Class | Class source | ||
|  Manager.php | Class | Class source | ||
|  SimpleCircularQueue.php | Class | Class source | ||
|  Files (27) | / | src | / | Behaviors | 
| File | Role | Description | 
|---|---|---|
|  OnEmptyQueueException.php | Class | Class source | 
|  OnEmptyQueueResumeException.php | Class | Class source | 
|  Files (27) | / | src | / | Contracts | 
| File | Role | Description | 
|---|---|---|
|  DelayingInterface.php | Class | Class source | 
|  EmptyQueueBehaviorInterface.php | Class | Class source | 
|  PayloadConverterInterface.php | Class | Class source | 
|  QueueInterface.php | Class | Class source | 
|  StorageInterface.php | Class | Class source | 
|  Files (27) | / | src | / | Converters | 
| File | Role | Description | 
|---|---|---|
|  AsIsConverter.php | Class | Class source | 
|  SerializableConverter.php | Class | Class source | 
|  Files (27) | / | src | / | Storage | 
| File | Role | Description | 
|---|---|---|
|  PhpRedisStorage.php | Class | Class source | 
|  PredisStorage.php | Class | Class source | 
|  Files (27) | / | tests | / | Functional | 
| File | Role | Description | 
|---|---|---|
|  FunctionalPredisTest.php | Class | Class source | 
|  FunctionalRedisTest.php | Class | Class source | 
|  StorageSameTest.php | Class | Class source | 
|  Files (27) | / | tests | / | Unit | 
| File | Role | Description | 
|---|---|---|
|  CircularQueueTest.php | Class | Class source | 
|  ManagerTest.php | Class | Class source | 
|  SerializableConverterTest.php | Class | Class source | 
|  SimpleCircularQueueTest.php | Class | Class source | 
|  StorageTest.php | Class | Class source | 
| The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. | 
|  Install with Composer | 
| Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
| 100% | 
 | 
 | 
| Applications that use this package | 
 If you know an application of this package, send a message to the author to add a link here.
 If you know an application of this package, send a message to the author to add a link here.