Skip to content

Commit afb5c8f

Browse files
committed
added exmaple
1 parent b9bcb11 commit afb5c8f

2 files changed

Lines changed: 53 additions & 1 deletion

File tree

examples/array_queue.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
require __DIR__ . '/../vendor/autoload.php';
4+
5+
class CsvReport
6+
{
7+
public function handle(string $format, string $email)
8+
{
9+
echo 'handled '.$format.' sent to '.$email.PHP_EOL;
10+
}
11+
}
12+
13+
$queue = new Queue\ArrayQueue;
14+
$queue->setChannel('reports');
15+
16+
$queue->push(new Queue\Job(CsvReport::class, ['csv', 'bob@acme.com']));
17+
$queue->push(new Queue\Job(CsvReport::class, ['xml', 'bill@acme.com']));
18+
$queue->push(new Queue\Job(CsvReport::class, ['pdf', 'baz@acme.com']));
19+
$queue->push(new Queue\Job(CsvReport::class, ['jpg', 'ben@acme.com']));
20+
21+
$handler = function (string $message) use ($queue) {
22+
$job = Queue\Job::parse($message);
23+
24+
echo PHP_EOL;
25+
echo 'Received job'.PHP_EOL;
26+
echo 'Attempts: '.$job->getAttempts().PHP_EOL;
27+
echo 'Status: '.$job->getStatus().PHP_EOL;
28+
echo 'Task: '.$job->getTask().PHP_EOL;
29+
30+
if ($job->getAttempts() > 3) {
31+
echo 'Received failed'.PHP_EOL;
32+
return;
33+
}
34+
35+
if ($job->getStatus() == $job::STATUS_PENDING && $job->getArgs()[0] == 'pdf') {
36+
$job->failing();
37+
return $queue->push($job);
38+
}
39+
40+
if ($job->getStatus() == $job::STATUS_FAILING) {
41+
$job->retry();
42+
return $queue->push($job);
43+
}
44+
45+
[$class, $method] = explode('@', $job->getTask(), 2);
46+
47+
$ref = new ReflectionClass($class);
48+
$ref->getMethod($method)->invokeArgs(new $class, $job->getArgs());
49+
};
50+
51+
$worker = new Queue\Worker($queue, $handler, 4);
52+
$worker->run();

readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ ReportsWorker.php
3333
$task = $job->getTask(); // Report@export
3434
[$class, $action] = explode('@', $task, 2);
3535

36-
$ref = ReflectionClass($class);
36+
$ref = new ReflectionClass($class);
3737
$result = $ref->getMethod($action)->invokeArgs(new $class, $job->getArgs());
3838
};
3939

0 commit comments

Comments
 (0)