mybuilder / supervisor-bundle
Symfony 3/4/5 bundle which allows you to use @Supervisor annotations to configure how Supervisor runs your console commands.
Installs: 54 997
Dependents: 0
Suggesters: 1
Security: 0
Stars: 34
Watchers: 15
Forks: 0
Open Issues: 0
Requires
- php: >=7.4
- doctrine/annotations: ~1.0
- francodacosta/supervisord: ~1.0
- symfony/config: ~4.0||~5.0
- symfony/console: ~4.0||~5.0
- symfony/framework-bundle: ~4.0||~5.0
- symfony/yaml: ^4.0||~5.0
Requires (Dev)
- phpunit/phpunit: ~9.0
README
A bundle for Symfony 4/5 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 config/bundles.php
for Symfony:
return [ MyBuilder\Bundle\SupervisorBundle\MyBuilderSupervisorBundle::class => ['all' => true], ];
Configure the bundle
You can add the following to packages/my_builder_supervisor.yaml
for Symfony 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: bin/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 bin/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:
$ bin/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:
$ bin/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.