- How can I load data faster in Laravel when filtering large integer ID lists?
- How can I run Shopware scheduled tasks on shared hosting without Supervisor?
- When should I use Laravel’s sole() method instead of first() or firstOrFail()?
- How can Mac users create and use .NET DLLs for Business Central and Power Apps integration?
How can I run Shopware scheduled tasks on shared hosting without Supervisor?
Shopware 6 relies heavily on scheduled tasks and the Symfony Messenger system to handle background jobs such as indexing, emails, cleanup tasks, and integrations.
On managed servers or VPS environments, this is usually handled via:
- Supervisor
- Long-running workers
- CLI-based cron execution
However, on shared hosting, these options are often unavailable or restricted. This leads to stalled scheduled tasks, delayed emails, and unstable background processing.
This article explains how to run Shopware scheduled tasks reliably on shared hosting, even when Supervisor is not available.
The Problem: Cron Execution Limits
Most shared hosting providers impose strict cron limitations, such as:
- Cron jobs can execute only PHP files
- Direct execution of Shopware console commands is blocked
- Long-running processes are terminated automatically
- Supervisor or system-level daemons are not allowed
Because of this:
- Standard Shopware background processing cannot be set up
- scheduled-task:run does not execute
- Messenger queues stop processing
- Scheduled tasks pile up in the database
A workaround is required to stay within hosting constraints.
The Solution: PHP Cron Wrappers
The solution is to wrap Shopware console commands inside dedicated PHP scripts and execute those scripts via the hosting provider’s cron interface.
Why this works
- Hosting panels allow PHP file execution
- PHP scripts can internally call CLI commands using exec()
- Shopware commands run for a short, controlled duration
- No long-running processes are required
This approach mimics Supervisor behavior in small time slices.
Step 1: Scheduler Runner Script
Create a PHP file (e.g. scheduler.php) to run scheduled tasks:
| 1 2 3 4 5 | <?php // run scheduled tasks exec('php <path-to-project>/bin/console scheduled-task:run --no-wait --time-limit=60'); |
What this does:
- Executes Shopware scheduled tasks
- Runs for a maximum of 60 seconds
- Prevents long execution timeouts
- Safe for repeated cron execution
Step 2: Messenger Worker Script
Create another PHP file (e.g., messenger_consume.php) to process message queues:
| 1 2 3 4 5 6 7 8 9 | <?php // run message queue worker briefly exec('php <path-to-project>/bin/console messenger:consume async --time-limit=60'); exec('php <path-to-project>/bin/console messenger:consume failed --time-limit=60'); exec('php <path-to-project>/bin/console messenger:consume scheduler_shopware --time-limit=60'); |
What this covers:
- Async message processing
- Failed message retries
- Shopware scheduler queue
Each command:
- Runs briefly
- Exits cleanly
- Can be triggered repeatedly via cron
Step 3: Configure Cron Jobs
In your hosting control panel:
- Schedule scheduler.php every 5 minutes
- Schedule messenger_consume.php every 5 minutes
- Use the PHP binary provided by the host
This ensures:
- Tasks are processed continuously
- No single job runs too long
- Hosting limits are respected
Conclusion: Stable Scheduling Without a Supervisor
Running Shopware 6 on shared hosting does not mean giving up reliable background processing.
By:
- Wrapping console commands inside PHP scripts
- Executing them via standard cron jobs
- Limiting the runtime for each execution
You can run Shopware Scheduler and Messenger queues safely, even without Supervisor or system access.
Recent help desk articles
Greetings! I'm Aneesh Sreedharan, CEO of 2Hats Logic Solutions. At 2Hats Logic Solutions, we are dedicated to providing technical expertise and resolving your concerns in the world of technology. Our blog page serves as a resource where we share insights and experiences, offering valuable perspectives on your queries.

