PHP code example of tarantool / queue
1. Go to this page and download the library: Download tarantool/queue library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tarantool / queue example snippets
use Tarantool\Queue\Queue;
...
$queue = new Queue($client, 'foobar');
$queue->put('foo');
$queue->put(true);
$queue->put(42);
$queue->put(4.2);
$queue->put(['foo' => ['bar' => ['baz' => null]]]);
$queue->put(new MyObject());
Task::getId()
Task::getState() // States::READY, States::TAKEN, States::DONE, States::BURY or States::DELAYED
Task::getData()
Task::isReady()
Task::isTaken()
Task::isDone()
Task::isBuried()
Task::isDelayed()
use Tarantool\Queue\Options;
$queue->put('foo', [Options::DELAY => 30.0]);
$queue->put('bar', [Options::TTL => 5.0]);
$queue->put('baz', [Options::TTR => 10.0, Options::PRI => 42]);
$taskOrNull = $queue->take();
// wait 2 seconds
$taskOrNull = $queue->take(2.0);
// wait 100 milliseconds
$taskOrNull = $queue->take(.1);
$data = $task->getData();
// process $data
$task = $queue->ack($task->getId());
$task = $queue->release($task->getId());
// for *ttl queues you can specify a delay
$task = $queue->release($task->getId(), [Options::DELAY => 30.0]);
$task = $queue->peek($task->getId());
$task = $queue->bury($task->getId());
$count = $queue->kick(3); // kick 3 buried tasks
$taskOrNull = $queue->touch($takenTask->getId(), 5.0); // increase ttr/ttl to 5 seconds
$task = $queue->delete($task->getId());
$queue->truncate();
$stats = $queue->stats();
[
'tasks' => [
'taken' => 1,
'buried' => 1,
'ready' => 1,
'done' => 0,
'delayed' => 0,
'total' => 3,
],
'calls' => [
'bury' => 1,
'put' => 3,
'take' => 1,
...
],
]
$calls = $queue->stats('calls');
$total = $queue->stats('tasks.total');
$result = $queue->call('put_many', [
'foo' => ['foo', [Options::DELAY => 30.0]],
'bar' => ['bar'],
]);
bash
docker network create tarantool-php
docker run -d --net=tarantool-php -p 3301:3301 --name=tarantool \
-v $(pwd)/tests/Integration/queues.lua:/queues.lua \
tarantool/tarantool:2 tarantool /queues.lua