An open API service indexing awesome lists of open source software.

https://github.com/mle86/php-wq-beanstalkd

A Beanstalkd adapter for WQ (https://github.com/mle86/php-wq)
https://github.com/mle86/php-wq-beanstalkd

beanstalk beanstalk-worker beanstalkd beanstalkd-tubes php php-library work-queue wq

Last synced: 4 months ago
JSON representation

A Beanstalkd adapter for WQ (https://github.com/mle86/php-wq)

Awesome Lists containing this project

README

        

# WQ-Beanstalkd (`mle86/wq-beanstalkd`)

This package contains the PHP class
mle86\WQ\WorkServerAdapter\\BeanstalkdWorkServer.

It supplements the
[**mle86/wq**](https://github.com/mle86/php-wq) package
by implementing its `WorkServerAdapter` interface.

It connects to a Beanstalkd server
using the [pda/pheanstalk](https://github.com/pda/pheanstalk) package
by Paul Annesley.

# Version and Compatibility

This is
**version 1.0.2**
of `mle86/wq-beanstalkd`.

It was developed for
version 1.0.0
of `mle86/wq`
and should be compatible
with all of its future 1.x versions as well.

# Installation and Dependencies

```
$ composer require mle86/wq-beanstalkd
```

It requires PHP 7.1,
[mle86/wq](https://github.com/mle86/php-wq),
and [pda/pheanstalk](https://github.com/pda/pheanstalk).

# Class reference

class mle86\WQ\WorkServerAdapter\\BeanstalkdWorkServer implements WorkServerAdapter

`getNextQueueEntry()` uses the `RESERVE` command,
`buryEntry()` uses the `BURY` command,
`storeJob()` and `requeueEntry()` use the `PUT` command,
and `deleteEntry()` uses the `DELETE` command.

*Work Queues* are Beanstalkd's “tubes”.

* public function __construct (Pheanstalk $pheanstalk)
Constructor.
Takes an already-configured `Pheanstalk` instance to work with.
Does not attempt to establish a connection itself –
use the `connect()` factory method for that instead.
* public static function connect (string $host = "localhost", int $port = PheanstalkInterface::DEFAULT\_PORT, int $connectTimeout = null)
Factory method.
See [Pheanstalk::__construct](https://github.com/pda/pheanstalk/blob/master/src/Pheanstalk.php)
for the parameter descriptions.

Interface methods
which are documented in the [`WorkServerAdapter`](https://github.com/mle86/php-wq/blob/master/doc/Ref_WorkServerAdapter_interface.md) interface:

* public function storeJob (string $workQueue, Job $job, int $delay = 0)
* public function getNextQueueEntry ($workQueue, int $timeout = DEFAULT\_TIMEOUT) : ?QueueEntry
* public function buryEntry (QueueEntry $entry)
* public function requeueEntry (QueueEntry $entry, int $delay, string $workQueue = null)
* public function deleteEntry (QueueEntry $entry)

# Usage example

```php
processNextJob("mail", function(Job $job) {
$job->...;
});
}
```

This executes all jobs available in the local Beanstalkd server's “`mail`” tube, forever.
It will however abort if one of the jobs throws an exception –
you might want to add a logging try-catch block around the `processNextJob()` call
as shown in [WQ's “Quick Start” example](https://github.com/mle86/php-wq#quick-start).