win32service/win32servicebundle
Symfony bundle for running and managing PHP applications as native Windows services using win32service. Provides service commands, configuration, and straightforward integration for Windows deployments.
win32service PHP extension so a Symfony Console command (queue worker, scheduler loop, long-running consumer) can be registered, started, stopped, and monitored as a native Windows Service. This is the decision point for "how do our background jobs run on Windows Server?" — and it is the only mature, maintained OSS answer in the PHP ecosystem.sc-based service wrappers plus recovery/restart policy, event log integration, and signal handling. Adoption is almost always cheaper than building; the realistic alternative is avoiding the problem by hosting workers on Linux containers.queue:work, schedule:run, Horizon, and custom Artisan commands are the natural payloads. However, this is a Symfony bundle, not a Laravel package — there is no service provider, no config/win32service.php, and no published Laravel integration. Realistically you would consume the underlying win32service extension plus Symfony Console directly, or write a thin Laravel adapter yourself. Treat this as "the reference implementation of the hard part," not a drop-in Laravel dependency.Adopt when:
start /b php artisan queue:work is not equivalent and will not survive reboots or logoffs reliably.Look elsewhere when:
win32service extension cannot be installed in your environment (shared hosting, restricted php.ini, non-privileged service account) — the bundle is inert without it.For executives: We have a small, stable dependency that lets our PHP application run as a proper Windows Service — meaning our background jobs start automatically at boot, run under a service account without anyone logged in, and recover from crashes. The alternative is building and maintaining a bespoke Windows wrapper, which we would own forever. The new release (v2.1.0) is a maintenance release: no breaking changes, no new features, no deprecations. It adds PHP 8.4 and 8.5 to the test matrix and adds Symfony 7.4 compatibility, plus routine CI dependency bumps. Practical effect: our PHP upgrade path on Windows is not blocked by this dependency. Risk is low and unchanged.
For engineering: v2.1.0 is a compatibility and CI release. Changes: actions/cache 4→6, actions/checkout 4→7, PHP 8.4/8.5 added to the test matrix, Symfony 7.4 compatibility (PR #23, new contributor). No API changes, no breaking changes, no deprecations. Safe to bump as a routine minor upgrade; no migration work, no code changes expected. Two caveats worth stating plainly: this is a Symfony bundle, so there is no Laravel service provider — integration is via the win32service extension and Symfony Console, and we own any Laravel glue. And the release is dominated by automated dependency bumps, which is a reasonable maintenance signal but not evidence of active feature investment; plan for the possibility that we are the ones fixing anything that breaks on future PHP versions. Verify the upgrade on a Windows runner in CI, not just Linux.
How can I help you explore Laravel packages today?