Zoeken…


Een taak maken

U kunt een taak (console-opdracht) in Laravel maken met Artisan. Vanaf uw opdrachtregel:

php artisan make:console MyTaskName

Dit maakt het bestand in app / Console / Commands / MyTaskName.php . Het ziet er zo uit:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class MyTaskName extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'command:name';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        //
    }
}

Enkele belangrijke delen van deze definitie zijn:

  • De eigenschap $signature is wat uw opdracht identificeert. Je kunt dit commando later uitvoeren via de opdrachtregel met Artisan door php artisan command:name (Where command:name overeen met de $signature je commando)
  • De eigenschap $description is de hulp / het gebruik van Artisan naast uw opdracht wanneer deze beschikbaar wordt gesteld.
  • Met handle() methode handle() schrijft u de code voor uw opdracht.

Uiteindelijk wordt je taak via Artisan beschikbaar gesteld aan de opdrachtregel. De protected $signature = 'command:name'; eigendom van deze klasse is wat je zou gebruiken om het uit te voeren.

Een taak beschikbaar stellen

U kunt een taak beschikbaar stellen aan Artisan en aan uw toepassing in het app / Console / Kernel.php- bestand.

De Kernel klasse bevat een array met de naam $commands die uw opdrachten beschikbaar maakt voor uw toepassing.

Voeg uw commando toe aan deze array om het beschikbaar te maken voor Artisan en uw applicatie.

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        Commands\Inspire::class,
        Commands\MyTaskName::class // This line makes MyTaskName available
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
    
    }
}

Zodra dit is gebeurd, hebt u nu toegang tot uw opdracht via de opdrachtregel, met behulp van Artisan. Ervan uitgaande dat uw opdracht de eigenschap $signature heeft ingesteld op my:task , kunt u de volgende opdracht uitvoeren om uw taak uit te voeren:

php artisan my:task

Uw taak plannen

Wanneer uw opdracht beschikbaar wordt gesteld aan uw toepassing, kunt u Laravel gebruiken om te plannen dat het op vooraf gedefinieerde intervallen wordt uitgevoerd, net zoals u een CRON zou doen.

In het app / Console / Kernel.php- bestand vindt u een schedule die u kunt gebruiken om uw taak te plannen.

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        Commands\Inspire::class,
        Commands\MyTaskName::class
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('my:task')->everyMinute();
        // $schedule->command('my:task')->everyFiveMinutes();
        // $schedule->command('my:task')->daily();
        // $schedule->command('my:task')->monthly();
        // $schedule->command('my:task')->sundays();
    }
}

Ervan uitgaande dat de $signature uw taak my:task kunt u deze plannen zoals hierboven wordt weergegeven, met behulp van het Schedule $schedule . Laravel biedt tal van verschillende manieren om uw opdracht te plannen, zoals weergegeven in de opmerkingen zonder regels.

De planner instellen om uit te voeren

De planner kan worden uitgevoerd met de opdracht:

php artisan schedule:run

De planner moet elke minuut worden uitgevoerd om correct te werken. U kunt dit instellen door een cron-taak te maken met de volgende regel, die de planner elke minuut op de achtergrond uitvoert.

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow