netsells / laravel-mutex-migrations
Run mutually exclusive migrations from more than one server at a time
Installs: 15 225
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^8.2
- illuminate/console: ^10.0|^11.0
- illuminate/contracts: ^10.0|^11.0
- illuminate/database: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- spatie/fork: ^1.1
README
Run mutually exclusive migrations from more than one server at a time.
Using Laravel's functionality for Atomic Locks, this package extends the built-in MigrateCommand
class to allow migrations to be run safely when there is the chance that they may be run concurrently against the same database.
Installation
Install the package with:
composer require netsells/laravel-mutex-migrations
Optionally publish the package config file:
php artisan vendor:publish --tag=mutex-migrations-config
Usage
Running a mutex migration using the default database
store requires the existence of a table to store cache locks. If it does not exist the command will automatically fallback to a standard migration.
php artisan migrate --mutex
If two or more migrations happen to run concurrently, the first to acquire a lock will block the next one from running until it has finished, or until the lock times out - after 60 seconds, by default.
Testing
./vendor/bin/phpunit