- Notifications
You must be signed in to change notification settings - Fork58
Manage your Laravel Task Scheduling in a friendly interface and save schedules to the database.
License
robersonfaria/laravel-database-schedule
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This librarian creates a route(default: /schedule) in your application where it is possible to manage whichschedules will be executed at any given moment, these schedules are recorded in the database and can be changed,activated, inactivated or deleted via the interface without the need for a new application deployment.
- Run
composer require robersonfaria/laravel-database-schedule - Run
php artisan migrate
You can set the following environment variables to configure schedules:
- SCHEDULE_TIMEZONE : The default is the same configured for the application, but if you need the schedules to run in a different timezone, it is possible to configure it with this variable
- SCHEDULE_CACHE_DRIVER : The default is
file - SCHEDULE_CACHE_ENABLE : The default is disabled when
APP_DEBUG=trueand enabled whenAPP_DEBUG=false
There are several library configuration options, to change the settings you can get the configuration file for your project
php artisan vendor:publish --provider="RobersonFaria\DatabaseSchedule\DatabaseSchedulingServiceProvider" --tag="config"Dashboard Authorization exposes a dashboard at/schedule URI.
In the configuration file it is possible to define whether to restrict access to route/schedule, the default is true. If access is restricted, the user must be logged in and meet the requirements defined in theviewDatabaseSchedulegate controls access.
<?phpreturn [//.../** * If restricted_access is true, the user must be authenticated and meet the definition of `viewDatabaseSchedule` gate */'restricted_access' =>env('SCHEDULE_RESTRICTED_ACCESS',true),//...]
Note that this value can also be changed using the SCHEDULE_RESTRICTED_ACCESS environment variable.
ATTENTION: if restricted_access is set to false, access to the/ schedule route will be public.
You must define the gates in your service providers, laravel by default already brings the providerApp\Providers\AuthServiceProvider for this purpose. See more in the Laravel documentationhttps://laravel.com/docs/8.x/authorization#gates
You are free to modify this gate as needed to restrict access to your Database Schedule Dashboard.
protectedfunctiongate(){ Gate::define('viewDatabaseSchedule',function ($user) {returnin_array($user->email, ['roberson.faria@gmail.com', ]); });}
If you want to limit access to a route to users who have a certain role, you can do so.
Gate::define('viewDatabaseSchedule',function ($user) {return$user->hasRole('administrator');});
Basically, if your gate hasreturn true access will be allowed, ifreturn false access will be restricted.
If you have a lot of jobs, you can make managing them easier by enabling the groups feature inconfig/database-schedule.php:
/** * If you have a lot of jobs, you can group them for easier managing of jobs. */'enable_groups' => true,
This will allow you to filter in the job listing only the jobs belonging to a certain group.
Create the command for your scheduled taskapp/Console/Commands/test.php:
<?phpnamespaceApp\Console\Commands;useIlluminate\Console\Command;class testextends Command{/** * The name and signature of the console command. * * @var string */protected$signature ='command:test {user} {initialDate} {finalDate}';/** * The console command description. * * @var string */protected$description ='Command description';/** * Create a new command instance. * * @return void */publicfunction__construct() {parent::__construct(); }/** * Execute the console command. * * @return int */publicfunctionhandle() {$this->info('Hello' .$this->argument('user'));$this->info("Initial Date:" .$this->argument('initialDate'));$this->info("Final Date:" .$this->argument('finalDate'));return0; }}
Access the dashboard and the command will be listed for scheduling, create a schedule like the example below:
Run the artisan command to run scheduled tasks
php artisan schedule:run
The console output will look like this
Running scheduled command: ('/usr/bin/php7.4''artisan' command:test 1'2022-02-02 00:00:00''2022-04-02 00:00:00'>'path/to/storage/logs/schedule-8763d2ce5a20ee888dd9d8a7e5a5cfcd4b315375.log'2>&1;
If you marked the sending of the output by email you will receive an email similar to this one:
You can also list registered and active commands using artisan command:
$ php artisan schedule:list+----------------------------------------------------------------------------------------+-----------+-------------+----------------------------+| Command| Interval| Description| Next Due|+----------------------------------------------------------------------------------------+-----------+-------------+----------------------------+|'/usr/bin/php7.4''artisan' inspire|*****|| 2022-03-02 17:05:00 +00:00||'/usr/bin/php7.4''artisan' command:test 1'2022-02-02 00:00:00''2022-04-02 00:00:00'|*****|| 2022-03-02 17:05:00 +00:00|+----------------------------------------------------------------------------------------+-----------+-------------+----------------------------+
- That library was inspired by the librarytherezor/laravel-database-schedule
About
Manage your Laravel Task Scheduling in a friendly interface and save schedules to the database.
Topics
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Contributors7
Uh oh!
There was an error while loading.Please reload this page.



