Laravel version | Package version |
---|---|
5.7 | 1.0 |
6.0 | 2.0 |
7.0 | 3.0 |
8.0 | 4.0 |
9.0 | 5.0 |
10.0 | 6.0 |
- PHP >= 8.0
- Laravel >= 9.x
composer require stylers/laravel-task-manager
docker run -it --rm -v $PWD:/app -w /app composer sh
composer install
./vendor/bin/phpunit
TaskTimer trait is using Laravel's Schedule Frequency Options
- Add Interface and Trait to class implementation and add handle method for a command entrypoint
use Illuminate\Console\Command;
use Stylers\TaskManager\Contracts\TaskTimerInterface;
use Stylers\TaskManager\Traits\TaskTimer;
class CommandTask extends Command implements TaskTimerInterface
{
use TaskTimer;
public function handle()
{
//
}
}
- Add CommandTask to TaskManager
use Illuminate\Support\ServiceProvider;
use Stylers\TaskManager\Console\TaskManager;
use Stylers\TaskManager\Tests\Fixtures\CommandTask;
class ScheduleServiceProvider extends ServiceProvider
{
public function boot()
{
parent::boot();
$this->app->booted(function () {
$scheduler = app(TaskManager::class);
// Single task adding
$scheduler->addTasks(
(new CommandTask())->dailyAt('6:00')
);
// ---- OR ----
// Multiple task adding in same time
$scheduler->bulkAddTasks([
(new CommandTask())->dailyAt('6:00'),
(new CommandTask())->weekly(),
]);
});
}
}
- In example called in web.php
(please feel free to add security checks for endpoint)
use Stylers\TaskManager\Console\TaskManager;
use Illuminate\Support\Facades\Route;
Route::get('/cron', static function () {
TaskManager::run();
});
- Set cron to call this endpoint
* * * * * curl -s -X GET -L domain/cron >>/var/log/cron.log 2>&1
- WebInvention (for this blog post)