andaris / resque-webui-bundle
Web interface for php-resque
Package info
github.com/xelan/resque-webui-bundle
Type:symfony-bundle
pkg:composer/andaris/resque-webui-bundle
Requires
- php: >=7.2.5
- mjphaynes/php-resque: ^2.1|^3.0|^4.0
- symfony/http-foundation: ^3.4|^4.4|^5.4
- symfony/http-kernel: ^3.4|^4.4|^5.4
- symfony/routing: ^3.4|^4.4|^5.4
- symfony/security-csrf: ^3.4|^4.4|^5.4
- twig/twig: ^1.44|^2.16|^3.0
Requires (Dev)
- phpunit/phpunit: ^8.5.52
- squizlabs/php_codesniffer: ^4.0.4
- symfony/config: ^3.4|^4.4|^5.4
- symfony/dependency-injection: ^3.4|^4.4|^5.4
- symfony/yaml: ^3.4|^4.4|^5.4
README
This Symfony bundle provides a web interface for mjphaynes/php-resque.
Core features of the web interface are:
- Overview of running workers (similar to bin/resque workers)
- Overview of all queues (similar to bin/resque queues), with the share of jobs that failed
- Overview of all jobs, filtered by status and by queue
- View job details, JSON formatting and easy copy/paste of payload
- Queue a job again from its details page, on the same queue and with the same payload
- Easy installation as Symfony bundle, integration (routing, security, ...)
- Easy style customization/branding via Bootstrap3 themes and Symfony bundle overrides
Requirements
The PHP-Resque Web UI is designed to run as part of an existing Symfony application. To use it without an existing app, you can install the Symfony framework and then install the bundle.
Installation
Install the bundle using composer:
composer require andaris/resque-webui-bundle
Register the bundle in your application kernel:
<?php // app/AppKernel.php or src/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = [ // ... new Andaris\ResqueWebUiBundle\AndarisResqueWebUiBundle(), ]; // ... } // ... }
Configure the routing security for the bundle:
# app/config/security.yml or config/security.yml access_control: - { path: ^/resque, roles: YOUR_ADMIN_ROLE } # e.g. ROLE_ADMIN
Everyone holding that role can also queue a job again from its details page, which puts
real work back on the queue. To let a wider group look without letting it run anything,
put a rule for the retry in front of the general one; access_control matches in order,
so the more specific rule has to come first:
# app/config/security.yml or config/security.yml access_control: - { path: ^/resque/job/[^/]+/retry$, methods: [POST], roles: YOUR_ADMIN_ROLE } # e.g. ROLE_ADMIN - { path: ^/resque, roles: YOUR_VIEWER_ROLE } # e.g. ROLE_USER
The bundle sends no framing headers of its own. As the dashboard acts on what it shows,
serving it with X-Frame-Options: DENY is recommended, so that a page elsewhere cannot
put it in a frame and have someone click in it unknowingly.
Enable the routing of the bundle:
# app/config/routing.yml or config/routing.yml resque: resource: "@AndarisResqueWebUiBundle/Resources/config/routing.yml" prefix: /resque/
Usage
The Web UI can now be accessed via http://your-application/resque/.
Queueing a job again is confirmed in the browser and posted with a CSRF token. Where the application has CSRF protection enabled, its own token manager is used; otherwise the bundle falls back to one of its own, which keeps the token in the PHP session.
