Laravel Job

mxl/laravel-job image

Laravel Job stats

Downloads
515.6K
Stars
56
Open Issues
1
Forks
7

View on GitHub →

Laravel job tools

laravel-job

Laravel job tools:

  • dispatch job from command line with parameters to queue or run synchronously;
  • Job base class with boilerplate.

Installation

$ composer require mxl/laravel-job

Laravel 5.5+ will use the auto-discovery feature to add MichaelLedin\LaravelJob\LaravelJobServiceProvider::class to providers.

This package is not compatible with older Laravel versions.

Usage

Dispatching job from command line to the queue

Make sure that you either use sync connection (see default property in config/queue.php) or run queue worker:

$ php artisan queue:work

Then dispatch command with:

$ php artisan job:dispatch YourJob

if YourJob class is located under \App\Jobs or specify full class name with namespace:

$ php artisan job:dispatch '\Path\To\YourJob'

Running jobs immediately

If you want to run job right now without posting it to queue use job:dispatchNow command:

$ php artisan job:dispatchNow YourJob

Dispatching jobs with parameters

$ php artisan job:dispatch YourJob John 1990-01-01

John and 1990-01-01 values will be passed to YourJob constructor as $name and $birthDate arguments:

class YourJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
__constructor($name, $birthDate)
{
// ...
}
 
public function handle()
{
// ...
}
}

Using job with parameters from command line and PHP code

Often a job is already in use somewhere from PHP code and if it has constructor arguments that must have specific type, then it can be required to parse command line parameters.

For this purpose implement FromParameters interface:

use MichaelLedin\LaravelJob\FromParameters;
use Carbon\Carbon;
 
class YourJob implements ShouldQueue, FromParameters
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
__constructor(string $name, Carbon $birthDate)
{
// ...
}
 
public function handle()
{
// ...
}
 
public static function fromParameters(...$parameters)
{
return new self($parameters[0], Carbon::parse($parameters[1]));
}
}

Job boilerplate

Job classes always use the same interface ShouldQueue and Dispatchable, InteractsWithQueue, Queueable, SerializesModels traits.

To avoid such boilerplate your jobs can extend MichaelLedin\LaravelJob\Job class:

use MichaelLedin\LaravelJob\Job;
use Carbon\Carbon;
 
class YourJob extends Job
{
// ...
}

It also includes default FromParameters interface implementation that is equivalent to calling constructor with arguments provided by command line parameters without any parsing.
To add parsing override fromParameters method.

Maintainers

Other useful Laravel packages from the author

License

See the LICENSE file for details.

mxl photo

Chief technology officer at metapax.io

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Mxl Laravel Job Related Articles

HTTP Query Method Support in Laravel 13.19 image

HTTP Query Method Support in Laravel 13.19

Read article
Ship AI with Laravel: I Tricked My Own AI Into Leaking Everything image

Ship AI with Laravel: I Tricked My Own AI Into Leaking Everything

Read article
EnvKit: A Local Development Stack for Laravel on Windows and macOS image

EnvKit: A Local Development Stack for Laravel on Windows and macOS

Read article
Worker Metrics on the WorkerStopping Event in Laravel 13.18 image

Worker Metrics on the WorkerStopping Event in Laravel 13.18

Read article
Laravel WhatsApp: Two Backends Behind One Facade image

Laravel WhatsApp: Two Backends Behind One Facade

Read article
Yammi Audit Log: Track Who Really Made a Change Across Jobs and Queues image

Yammi Audit Log: Track Who Really Made a Change Across Jobs and Queues

Read article
Honeybadger logo

Honeybadger

Simple developer-focused application monitoring for Laravel. Error tracking, log management, uptime monitoring, status pages, and more!

Honeybadger
Securing Laravel logo

Securing Laravel

The essential security resource for Laravel devs, covering everything you need to keep your apps secure. Sign up to receive weekly security tips and monthly in depth articles, diving deep into security concepts you need to know!

Securing Laravel
DreamzTech logo

DreamzTech

Hire 6-10+ Yrs. experienced skilled Laravel Developers from DreamzTech. We ensure NDA protected, 100% quality delivery. Contact Us & Discuss Your Need.

DreamzTech
Curotec logo

Curotec

World class Laravel experts with GenAI dev skills. LATAM-based, embedded engineers that ship fast, communicate clearly, and elevate your product. No bloat, no BS.

Curotec
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum
LoadForge logo

LoadForge

Scalable load testing for web apps & APIs. Simulate real-world traffic and identify breaking points and performance limits with powerful, scalable load tests designed for Laravel.

LoadForge