Developed with love by KnpLabs Hire us for your project!
0

supervisor-bundle

by mybuilder

Easily update your @supervisor configuration by using annotations in Symfony commands.

Supervisor Bundle

Build Status

A bundle for Symfony 2/3 which allows you to use @Supervisor annotations to configure how Supervisor runs your console commands.

Installation

Install with composer

Run the composer require command:

$ php composer.phar require mybuilder/supervisor-bundle

Enable the bundle

Enable the bundle in the app/AppKernel.php:

public function registerBundles() {
    $bundles = [
        new MyBuilder\Bundle\SupervisorBundle\MyBuilderSupervisorBundle(),
    ];
}

Configure the bundle

You can add the following to your config.yml to define your global export configuration.

my_builder_supervisor:
    exporter:
        # any Supervisor program options can be specified within this block
        program:
            autostart: 'true'

        # allows you to specify a program that all commands should be passed to
        executor: php 

        # allows you to specify the console that all commands should be passed to
        console: app/console

Usage

The first step is to add the use case for the annotation to the top of the command you want to use the @Supervisor annotations in.

use MyBuilder\Bundle\SupervisorBundle\Annotation\Supervisor;

Then define the @Supervisor annotation within the command's PHPDoc, which tells Supervisor how to configure this program.
The example below declares that three instances of this command should be running at all times on the server entitled 'web', with the provided parameter --send.

/**
 * Command for sending our email messages from the database.
 *
 * @Supervisor(processes=3, params="--send", server="web")
 */
class SendQueuedEmailsCommand extends Command {}

Exporting the Supervisor configuration

You should run app/console supervisor:dump and review what the Supervisor configuration will look like based on the current specified definition.
If you are happy with this you can write out the configuration to a conf file:

$ app/console supervisor:dump --user=mybuilder --server=web > "/etc/supervisor.d/symfony.conf"

And then reload Supervisor:

$ kill -SIGHUP $(supervisorctl pid)

Environment

You can choose which environment you want to run the commands in Supervisor under like this:

$ app/console supervisor:dump --server=web --env=prod

Created by MyBuilder - Check out our blog for more insight into this and other open-source projects we release.

Copyright (c) 2013-2017 MyBuilder Limited

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
my_builder_supervisor:
exporter:
program: ~
executor: ~ # Example: php
console: ~ # Example: app/console