I\'m developing a package that has some scheduled tasks - is there way of registering / publishing them without affecting the base applications already set scheduled tasks?
You certainly can, all through the power of some basic object-oriented programming!
Let's create a Kernal class within your package's Console directory where we will be extending App\Console\Kernel
.
schedule
methodSince we are extending the App Console Kernel, we'll want to add the relevant schedule method and call the parent class' implementation of it. This will ensure that any previously scheduled tasks carry through.
Now you may add your own scheduled tasks per normal.
$schedule->command('')->daily();
We'll want to bind the class to the container, and make
it within our package's service provider's register
method:
$this->app->singleton('acme.package.console.kernel', function($app) {
$dispatcher = $app->make(\Illuminate\Contracts\Events\Dispatcher::class);
return new \Acme\Package\Console\Kernel($app, $dispatcher);
});
$this->app->make('acme.package.console.kernel');
That should be all that's required!
Some things to take into consideration with this though: