1. Arkadiusz Dzięgiel
  2. GlorpenQueueBundle



Bundle for offloading work to server side. Can add service tasks/jobs to queue for later execution.

Queue runs can safely overlap since tasks are locked upon acquiring by runner.

For forking and other funnies:


  • add requirements to composer.json:
    "require": {
        "glorpen/queue-bundle": "*"
  • enable the bundle in your AppKernel class



class AppKernel extends AppKernel
   public function registerBundles()
       $bundles = array(
           new Glorpen\QueueBundle\GlorpenQueueBundle(),
  • choose backend in config.yml



Bundle configuration:

    backend: propel


To add new task:

$queue = $container->get("glorpen.queue");
$queue->create('my.tasks_container', 'myMethod', array("arg1", 2));

Then to execute use app/console queue:run:

Remember that:

  • dataset is fetched on task execution, so it can change after you create task.
  • task arguments are serialized and stored in choosen backend

Other useful commands:

  • queue:restart-failed simply marks failed tasks as pending
  • queue:update marks crashed (eg. on OOM) tasks as failed and removes succesfull tasks

Named tasks

To add new named task:

$queue = $container->get("glorpen.queue");
$queue->create('my.tasks_container', 'myMethod', array("arg1", 2), 'now', 'my_named_task');

Then you can retrieve it with:

$queue = $container->get("glorpen.queue");
$task = $queue->getTask('my_named_task');
echo $task->getStatus();
echo $task->getProgress();

When creating named task:

  • completed or not started task with same name will be removed
  • if old task is currently running an exception will be thrown


Inside executing task you can set its current progress:

$queue = $container->get("glorpen.queue");