Download the PHP package stepovenko/console-mutex without Composer
On this page you can find all versions of the php package stepovenko/console-mutex. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download stepovenko/console-mutex
More information about stepovenko/console-mutex
Files in stepovenko/console-mutex
Package console-mutex
Short Description Mutex for Laravel Console Commands.
License MIT
Informations about the package console-mutex
Laravel Console Mutex
Mutex for Laravel Console Commands.
Laravel | Console Mutex |
---|---|
11.x | Support ☕ |
10.x | 10.x |
9.x | 9.x |
8.x | 8.x |
7.x | 7.x |
6.x | 6.x |
5.8.* | 5.8.* |
5.7.* | 5.7.* |
5.6.* | 5.6.* |
5.5.* | 5.5.* |
5.4.* | 5.4.* |
5.3.* | 5.3.* |
5.2.* | 5.2.* |
5.1.* | 5.1.* |
Table of contents
- Usage
- Strategies
- Advanced
- Set custom timeout
- Handle multiple commands
- Set custom storage folder
- Troubleshooting
- Trait included, but nothing happens?
- Several traits conflict?
- Sponsors
- License
Usage
-
Install the package via Composer:
- Use
Illuminated\Console\WithoutOverlapping
trait:
Strategies
Mutex can prevent overlapping by using various strategies:
file
(default)mysql
redis
memcached
The default file
strategy is acceptable for small applications, which are deployed on a single server.
If your application is more complex and deployed on several nodes, you should consider using another mutex strategy.
You can change strategy by using the $mutexStrategy
field:
Or by using the setMutexStrategy()
method:
Advanced
Set custom timeout
By default, if mutex sees that the command is already running, it will immediately quit. You can change that behavior by setting a timeout in which mutex can wait for another running command to finish its execution.
You can set the timeout by specifying the $mutexTimeout
field:
Or by using the setMutexTimeout()
method:
Here's how the $mutexTimeout
field is treated:
0
- no waiting (default);{int}
- wait for the given number of milliseconds;null
- wait for the running command to finish its execution;
Handle multiple commands
Sometimes it might be useful to have a shared mutex for multiple commands. You can easily achieve that by setting the same mutex name for all of those commands.
You should use the getMutexName()
method for that:
Set custom storage folder
If you're using the file
strategy, mutex files would be stored in the storage/app
folder.
You can change that by overriding the getMutexFileStorage()
method:
Troubleshooting
Trait included, but nothing happens?
WithoutOverlapping
trait overrides the initialize()
method:
If your command overrides the initialize()
method too, you have to call the initializeMutex()
method by yourself:
Several traits conflict?
If you're using another illuminated/console-%
package, you'll get the "traits conflict" error.
For example, if you're building a loggable command, which doesn't allow overlapping:
You'll get the traits conflict, because both of those traits are overriding the initialize()
method:
If two traits insert a method with the same name, a fatal error is produced, if the conflict is not explicitly resolved.
To fix that - override the initialize()
method and resolve the conflict:
Sponsors
License
Laravel Console Mutex is open-sourced software licensed under the MIT license.
All versions of console-mutex with dependencies
arvenil/ninja-mutex Version dev-master#82cbb2c
illuminate/console Version ^10.0
illuminate/support Version ^10.0
ramsey/collection Version ^2.0