composer require andaris/resque-webui-bundle
AppKernel.php (or src/Kernel.php):
new Andaris\ResqueWebUiBundle\AndarisResqueWebUiBundle(),
security.yml:
access_control:
- { path: ^/resque, roles: ROLE_ADMIN }
routing.yml:
resque:
resource: "@AndarisResqueWebUiBundle/Resources/config/routing.yml"
prefix: /resque/
/resque to view:
bin/resque workers).bin/resque queues).Monitoring Jobs
Debugging Failed Jobs
failed status.Worker Management
resque:restart command).Integration with Laravel
Resque to Laravel’s container in AppServiceProvider:
$this->app->bind('resque', function () {
return new \Resque();
});
dispatch(new MyJob)->onQueue('critical');
resque.job.failed) via Laravel’s event system.Customizing Views
app/Resources/AndarisResqueWebUiBundle/views/ to modify UI behavior.web/bundles/andarisresquewebui/.API Access
php-resque API for programmatic access:
$job = Resque::job(123); // Fetch job by ID
$job->payload(); // Get raw payload
php-resque is configured in config/queue.php:
'connections' => [
'resque' => [
'driver' => 'resque',
'queue' => 'default',
'timeout' => 120,
],
],
$resque = new \Resque();
$resque->setBackend('tcp://127.0.0.1:6379');
schedule:run or cron.Redis Misconfiguration
php-resque config:
$resque = new \Resque();
$resque->setBackend('tcp://host:port');
redis-cli to test connectivity.Permission Denied
security.yml roles aren’t assigned to users.ROLE_ADMIN) in your auth system.Job Payload Size Limits
json_encode($job->payload(), JSON_PRETTY_PRINT) in custom templates or truncate payloads.Worker Stuck in "Busy" State
php bin/console resque:restart
Or manually kill and restart them.Routing Conflicts
/resque conflicts with other routes.prefix in routing.yml or use a unique path:
prefix: /admin/resque/
config/packages/resque_web_ui.yaml:
resque_web_ui:
log_errors: true
redis-cli KEYS resque:* to inspect job/queue keys manually.php bin/console cache:clear
Custom Job Actions
JobController to add buttons (e.g., "Replay" or "Archive"):
// src/Controller/ResqueJobController.php
public function replayAction($queue, $jobId) {
$job = Resque::job($jobId);
Resque::enqueue($queue, $job->payload());
return $this->redirect($this->generateUrl('resque_jobs'));
}
Add Metrics
laravel-debugbar or spatie/laravel-metrics to display Resque stats.Theming
// web/css/andaris-resque-webui.scss
@import "~andaris/resque-webui-bundle/Resources/public/css/app.scss";
.resque-ui { background: #f0f0f0; }
API Endpoints
# config/routes.yaml
resque_api:
path: /api/resque/workers
controller: Andaris\ResqueWebUiBundle\Controller\ResqueWorkerController::apiListAction
laravel:), configure it in php-resque:
$resque = new \Resque();
$resque->setBackend('tcp://host:port', 'laravel:');
config/packages/resque_web_ui.yaml:
resque_web_ui:
worker_timeout: 300 # 5 minutes
class MyJob implements \Resque\Job {
public function perform() { /* ... */ }
public function onFail() { /* Custom fail logic */ }
}
How can I help you explore Laravel packages today?