1. Go to this page and download the library: Download berlioz/queue-manager 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/ */
berlioz / queue-manager example snippets
use Berlioz\QueueManager\Job\JobHandlerManager;
$manager = new JobHandlerManager($container, $defaultHandler);
$manager->addHandler('email', EmailJobHandler::class);
$manager->addHandler('report', ReportJobHandler::class);
$job = new Job('email'); // Example job with name 'email'
$manager->handle($job); // Delegates to EmailJobHandler
use Berlioz\QueueManager\Handler\JobHandlerInterface;
use Berlioz\QueueManager\Job\JobInterface;
use Berlioz\QueueManager\Exception\QueueManagerException;
class FooJobHandler implements JobHandlerInterface
{
public function handle(JobInterface $job): void
{
if ($job->getName() !== 'foo') {
throw new QueueManagerException('Invalid job name');
}
// Process the job
$payload = $job->getPayload();
echo "Processing job 'foo' with payload: " . json_encode($payload);
}
}
use Berlioz\QueueManager\Queue\MemoryQueue;
use Berlioz\QueueManager\Worker;
use Berlioz\QueueManager\WorkerOptions;
use Berlioz\QueueManager\Handler\JobHandlerManager;
use Psr\Log\NullLogger;
// Create a Job Handler Manager
$jobHandler = new JobHandlerManager($container);
// Initialize the Worker
$worker = new Worker($jobHandler);
// Optionally, set a logger
$worker->setLogger(new NullLogger());
// Configure worker options
$options = new WorkerOptions(
name: 'worker', // Worker name
limit: 10, // Max jobs to execute
memoryLimit: 128, // Memory limit in MB
timeLimit: 60, // Time limit in seconds
killFilePath: 10, // File to kill process
sleep: 2, // Sleep time between jobs in seconds
stopNoJob: true, // Stop if no job
backoffTime: 0, // Time to wait before retry failed job
backoffMultiplier: 1, // Multiplier for backoff time
);
// Create a queue instance
$queue = new MemoryQueue();
// Run the worker
$exitCode = $worker->run($queue, $options);
use Berlioz\QueueManager\Queue\DbQueue;
use Hector\Connection\Connection;
$dbConnection = new Connection('mysql://localhost:3306');
$queue = new DbQueue(
connection: $dbConnection, // Database connection
name: 'default', // Queue name
tableName: 'queue_jobs', // Name of MySQL table
retryTime: 30, // Time to wait after failed job
maxAttempts: 5, // Maximum attempts of a job
);
use Berlioz\QueueManager\Queue\MemoryQueue;
$queue = new MemoryQueue(
name: 'default', // Queue name
retryTime: 30, // Time to wait after failed job
);
use Aws\Sqs\SqsClient;
use Berlioz\QueueManager\Queue\AwsSqsQueue;
$queue = new AwsSqsQueue(
sqsClient: new SqsClient(...), // Database connection
name: 'default', // Queue name
queueUrl: '...', // AWS queue URL
retryTime: 30, // Time to wait after failed job
);
use Redis;
use Berlioz\QueueManager\Queue\RedisQueue;
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$queue = new RedisQueue(
redis: $redis, // Redis connection
name: 'default', // Queue name
);
use Berlioz\QueueManager\Queue\AmqpQueue;
use AMQPConnection;
$connection = new AMQPConnection([
'host' => 'localhost',
'port' => 5672,
'login' => 'guest',
'password' => 'guest',
'vhost' => '/',
]);
$connection->connect();
$queue = new AmqpQueue(
connection: $connection, // AMQP connection
name: 'default', // Queue name
maxAttempts: 5, // Maximum retry attempts
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.