soyuka/pmu
Monitor PHP-FPM status from Laravel. soyuka/pmu collects and exposes PHP-FPM pool metrics (requests, processes, slowlog-style stats) for easy health checks and observability in apps and dashboards.
v0.3.0 release introduces plugin support for sub-projects, enabling pmu to manage nested or modular Laravel sub-applications (e.g., app/Modules/, app/Plugins/) within a monorepo. This is a critical fit for Laravel projects using:
spatie/laravel-modules, custom plugin systems).laravel/valet, spatie/laravel-package-tools), reducing friction for teams already using modular patterns.pmu can now scope dependencies and publishing workflows to sub-directories, which is ideal for:
app/Providers/ or app/Console/ as sub-projects.orchid/software, backpack/crud).pmu-managed Artisan commands (e.g., php artisan plugin:publish).pmu to load sub-project providers dynamically (e.g., via config/app.php).composer.json scripts to target sub-projects:
{
"scripts": {
"post-install": "pmu require --sub-project=AdminPanel && pmu publish --sub-project=Auth",
"post-update": "pmu update --sub-project=Api"
}
}
pmu config:autoload to scope sub-project autoload paths or leverage Laravel’s composer.json "extra": "laravel": { "providers": [...] }.App\ServiceProvider).pmu’s --isolate flag for sub-projects and supplement with Laravel’s config/app.php "providers" array.composer install.pmu --profile and optimize via composer.json "minimum-stability" or caching layers.app/Admin, app/Api) currently structured? Can they be treated as pmu sub-projects?pmu’s sub-project isolation conflict with Laravel’s package discovery (e.g., config/publishes)?backpack/crud, orchid/software) that could leverage pmu’s sub-project features?pmu handle plugin-specific dependencies (e.g., backpack/crud requiring laravel/framework)?pmu’s sub-project workflows require parallelized CI jobs (e.g., GitHub Actions matrix)?pmu interact with Laravel’s mix-manifest.json or Vite if sub-projects include assets?composer.json management without breaking Laravel’s autoloader?pmu’s sub-project isolation introduces runtime errors (e.g., missing classes)?pmu can replace or complement Spatie’s module system for dependency management.pmu to manage their dependencies (e.g., pmu require backpack/crud --sub-project=Admin).hirak/prestissimo, dealerdirect/phpcodesniffer-composer-installer) via pmu’s --composer-plugin flag.pmu to pre-configure sub-projects in docker-compose.yml or devcontainer.json:
services:
laravel:
volumes:
- ./:/workspace
command: pmu init --sub-project=Api && composer install
Phase 1: Sub-Project Discovery
app/Admin/, app/Plugins/) and map to pmu sub-projects.pmu init --sub-project=Admin --sub-project=Auth
pmu list --sub-projects.Phase 2: Dependency Isolation
composer.json files to pmu-managed dependencies:
pmu require backpack/crud --sub-project=Admin
pmu require spatie/laravel-permission --sub-project=Auth
composer validate --sub-project=Admin.Phase 3: Publishing Workflows
config/publishes with pmu publish --sub-project=Admin for plugin-specific configs.Admin/config/admin.php to config/admin.php.Phase 4: Artisan Integration
pmu and Laravel:
// app/Console/Commands/PmuPublish.php
use Soyuka\Pmu\Pmu;
protected $pmu;
public function __construct(Pmu $pmu) { $this->pmu = $pmu; }
public function handle() { $this->pmu->publish(['--sub-project=Api']); }
app/Console/Kernel.php.Phase 5: CI/CD Automation
pmu for sub-project builds:
# GitHub Actions
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: pmu test --sub-project=Admin --sub-project=Auth
pmu’s sub-project isolation doesn’t break plugin-specific logic.pmu’s sub-project dependencies don’t conflict with Laravel’s global composer.json constraints (e.g., ^9.0 vs. ~9.0.0).pmu config:autoload --sub-project=Api to scope autoload paths and avoid conflicts with Laravel’s vendor/autoload.php.| Step | Action | Tools/Commands | Validation |
|---|---|---|---|
| 1 | Define sub-projects | pmu init --sub-project=Admin --sub-project=Auth |
pmu list --sub-projects |
| 2 | Migrate dependencies | pmu require package --sub-project=Admin |
composer validate --sub-project=Admin |
| 3 | Test publishing | pmu publish --dry-run --sub-project=Auth |
Verify files in config/ |
| 4 | Integrate Artisan | Create custom commands | php artisan pmu:publish --sub-project=Api |
| 5 | Update CI/CD | Add pmu test --sub-projects to workflows |
Run in staging |
| 6 | Monitor production | Log pmu operations |
Check Laravel logs for errors |
composer.json sprawl.pmu update --sub-project=Admin avoids touching global dependencies.How can I help you explore Laravel packages today?