PHP Event System with queue driver support
// Register the appropriate queue
$container->singleton(QueueContract::class, MemoryQueue::class);
// Bind the dispatcher as a singleton
$container->singleton(EventDispatcher::class);
$container->make(EventDispatcher::class)->listen('event.name', function($payload) {
// Listener receives the payload
});
$container->make(EventDispatcher::class)->fire('event.name', ['some' => 'payload data']);
$container->make(EventDispatcher::class)->listen('event.name', MyListener::class);
use Ivey\Events\EventListener;
class MyListener extends EventListener
{
proteceted static $should_queue = true;
public function fire($payload)
{
// TODO: Implement fire() method.
}
}
$worker = $container->make(Worker::class);
// Sleep for 5 seconds retry a max of 3 times before failing
$worker->setSleep(5)
->setTries(3)
->runDaemon();
// Add a listener for catching the failed jobs so you can handle them accordingly
$container->make(EventDispatcher::class)->listen('failed.job', function ($payload) {
});