# Symfony\Component\Process\Exception\ProcessTimedOutException: The process "'php' 'artisan' 'queue:work' '--queue=high,default' '--timeout=60'" exceeded the timeout of 60 seconds.

- **ID:** `php/laravel-queue-worker-timeout-exceeded`
- **Domain:** php
- **Category:** system_error
- **Verification:** ai_generated
- **Fix Rate:** 85%

## Root Cause

The Laravel queue worker process is being killed by the timeout setting because a job is taking longer than the configured timeout to execute, often due to slow external API calls, database queries, or infinite loops.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Laravel 9 | active | — | — |
| Laravel 10 | active | — | — |
| Laravel 11 | active | — | — |

## Workarounds

1. **Increase the timeout for the specific queue worker: `php artisan queue:work --timeout=120` (set to 120 seconds). Also update the `--timeout` option in your supervisor configuration if using it.** (75% success)
   ```
   Increase the timeout for the specific queue worker: `php artisan queue:work --timeout=120` (set to 120 seconds). Also update the `--timeout` option in your supervisor configuration if using it.
   ```
2. **Identify and optimize the slow job. Add logging to track execution time: `$start = microtime(true); // ... job logic ... \Log::info('Job took: ' . (microtime(true) - $start) . ' seconds');` Then refactor the job to use chunked processing, caching, or queueable API calls.** (85% success)
   ```
   Identify and optimize the slow job. Add logging to track execution time: `$start = microtime(true); // ... job logic ... \Log::info('Job took: ' . (microtime(true) - $start) . ' seconds');` Then refactor the job to use chunked processing, caching, or queueable API calls.
   ```

## Dead Ends

- **Setting the timeout to a very high value like 3600 seconds without investigating the root cause** — This only masks the problem; if a job hangs indefinitely, it will still eventually timeout or consume excessive resources, and the queue will stall. (80% fail)
- **Restarting the queue worker with `php artisan queue:restart`** — Restarting does not fix the underlying slow job; the job will be retried and fail again with the same timeout. (95% fail)
