Job qui enlève les vieilles jobRun
All checks were successful
Push image to registry / build-image (push) Successful in 6m18s
All checks were successful
Push image to registry / build-image (push) Successful in 6m18s
This commit is contained in:
35
app/Jobs/PruneOldJobRuns.php
Normal file
35
app/Jobs/PruneOldJobRuns.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Models\Job;
|
||||
use App\Models\JobRun;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Queue\Queueable;
|
||||
|
||||
class PruneOldJobRuns implements ShouldQueue
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
// For each job, keep only the last N runs
|
||||
foreach (Job::all() as $job) {
|
||||
$job->jobRuns()
|
||||
->orderByDesc('id')
|
||||
->skip(config('jobs.pruneOldJobRuns.max_runs_per_job'))
|
||||
->delete();
|
||||
}
|
||||
}
|
||||
}
|
20
config/jobs.php
Normal file
20
config/jobs.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
use Laravel\Telescope\Http\Middleware\Authorize;
|
||||
use Laravel\Telescope\Watchers;
|
||||
|
||||
return [
|
||||
|
||||
/**
|
||||
* Remove old job runs from the database.
|
||||
*/
|
||||
'pruneOldJobRuns' => [
|
||||
'enabled' => true,
|
||||
|
||||
/**
|
||||
* How many job runs a job can keep before we start pruning old ones.
|
||||
*/
|
||||
'max_runs_per_job' => 50,
|
||||
],
|
||||
|
||||
];
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
use App\Browser\Jobs\Hellcase\HellcaseJob;
|
||||
use App\Models\Job;
|
||||
use App\Jobs\PruneOldJobRuns;
|
||||
use App\Services\BrowserJobsInstances;
|
||||
use Illuminate\Foundation\Inspiring;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
@ -13,6 +13,11 @@ Artisan::command('inspire', function () {
|
||||
// Telescope
|
||||
Schedule::command('telescope:prune')->monthly();
|
||||
|
||||
// Prune old job runs
|
||||
Schedule::job(new PruneOldJobRuns)->monthly()->onOneServer()->withoutOverlapping()->name('prune-old-job-runs')->description('Prune old job runs')->skip(function () {
|
||||
return !config('jobs.pruneOldJobRuns.enabled');
|
||||
});
|
||||
|
||||
// Jobs
|
||||
Schedule::job(new HellcaseJob)->daily()->onOneServer()->withoutOverlapping()->name('hellcase')->description('Hellcase job');
|
||||
// Schedule::job(new HellcaseJob)->everyMinute()->onOneServer()->withoutOverlapping()->name('hellcase')->description('Hellcase job');
|
||||
|
4
todo.md
4
todo.md
@ -7,10 +7,10 @@
|
||||
- → Notification
|
||||
- Ou ajouter des images base64 dans les jobRun
|
||||
- Risque de devenir volumineux
|
||||
- Sauf avec le jobqui enlève les vieilles jobRun
|
||||
- Sauf avec le job qui enlève les vieilles jobRun
|
||||
- Notification live websocket
|
||||
- Websocket installé
|
||||
- Serveur php plus propre (nginx, apache, n'importe)
|
||||
- Job qui supprime les vieilles JobRun
|
||||
- Epic games
|
||||
|
||||
## Pour deploy Lama
|
||||
|
Reference in New Issue
Block a user