1. Go to this page and download the library: Download phelixjuma/php-enqueue 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/ */
phelixjuma / php-enqueue example snippets
class EmailJob implements JobInterface
{
/**
* @var Logger
*/
private $logger;
public function setUp(Task $task)
{
$this->logger = new Logger("email_job");
$this->logger->pushHandler(new StreamHandler('/path/to/log/email_job.log', Logger::DEBUG));
}
public function perform(Task $task)
{
// Actual logic to send an email goes here
$this->logger->info("Performing email job. Args: ".json_encode($task->getArgs()));
}
public function tearDown(Task $task)
{
}
}
use Phelixjuma\Enqueue\Jobs\EmailJob;
use Phelixjuma\Enqueue\RedisQueue;
use Phelixjuma\Enqueue\Task;
use Predis\Client;
// Some global section where redis and queue are defined
$redis = new Client('tcp://127.0.0.1:6379');
$queue = new RedisQueue($redis);
// Actual section to queue the email job task
$queue
->setName('test_queue')
->enqueue(new Task(new EmailJob(), ['some_arg' => 'some_value']));
namespace \Some\Name\Space\Service;
use Phelixjuma\Enqueue\Jobs\EmailJob;
use Phelixjuma\Enqueue\RedisQueue;
use Phelixjuma\Enqueue\Task;
use Predis\Client;
final class EnqueueService {
const DEFAULT_QUEUE = 'default';
private static $instance = null;
private RedisQueue|null $queue = null;
/**
* @return EnqueueService|null
*/
private static function getInstance(): ?EnqueueService
{
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
/**
* @param $job
* @param $args
* @param string $queueName
* @return void
*/
public static function enqueue($job, $args, string $queueName=self::DEFAULT_QUEUE): void
{
self::getInstance()
->init()
->queue
->setName($queueName)
->enqueue(new Task($job, $args));;
}
/**
* @return $this
*/
private function init(): EnqueueService
{
if ($this->queue !== null) {
return $this;
}
$redisHost = getenv("REDIS_HOST");
$redisPort = getenv("REDIS_PORT");
$redis = new Client("tcp://$redisHost:$redisPort");
$this->queue = new RedisQueue($redis);
return $this;
}
}
// Use the service within your application to add a job to a queue as
EnqueueService::enqueue(new EmailJob(), ['email' => '[email protected]', 'subject' => 'php-enqueue works!', 'message' => 'Thank you for this amazing package']);
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.