Recherche…
Créer une tâche
Vous pouvez créer une tâche (commande de la console) dans Laravel en utilisant Artisan. Depuis votre ligne de commande:
php artisan make:console MyTaskName
Cela crée le fichier dans app / Console / Commands / MyTaskName.php . Il ressemblera à ceci:
<?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()
{
//
}
}
Certaines parties importantes de cette définition sont les suivantes:
- La propriété
$signature
identifie votre commande. Vous pourrez exécuter cette commande ultérieurement via la ligne de commande en utilisant Artisan en exécutant laphp artisan command:name
(Wherecommand:name
correspond à la$signature
votre commande) - La propriété
$description
est l'aide / l'utilisation de Artisan à côté de votre commande lorsqu'elle est disponible. - La méthode
handle()
est l'endroit où vous écrivez le code pour votre commande.
Finalement, votre tâche sera mise à la disposition de la ligne de commande via Artisan. Le protected $signature = 'command:name';
propriété sur cette classe est ce que vous utiliseriez pour l'exécuter.
Rendre une tâche disponible
Vous pouvez rendre une tâche accessible à Artisan et à votre application dans le fichier app / Console / Kernel.php .
La classe Kernel
contient un tableau nommé $commands
qui rend vos commandes disponibles pour votre application.
Ajoutez votre commande à ce tableau, afin de le rendre disponible pour Artisan et votre application.
<?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)
{
}
}
Une fois cela fait, vous pouvez maintenant accéder à votre commande via la ligne de commande, en utilisant Artisan. En supposant que votre commande a la propriété $signature
définie sur my:task
, vous pouvez exécuter la commande suivante pour exécuter votre tâche:
php artisan my:task
Planification de votre tâche
Lorsque votre commande est mise à la disposition de votre application, vous pouvez utiliser Laravel pour planifier son exécution à des intervalles prédéfinis, comme vous le feriez avec un CRON.
Dans le fichier app / Console / Kernel.php , vous trouverez une méthode de schedule
que vous pouvez utiliser pour planifier votre tâche.
<?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();
}
}
En supposant que la $signature
votre tâche est my:task
vous pouvez la planifier comme indiqué ci-dessus, à l'aide de l'objet Schedule $schedule
. Laravel fournit de nombreuses façons de planifier votre commande, comme indiqué dans les lignes ci-dessus.
Définition du planificateur à exécuter
Le planificateur peut être exécuté en utilisant la commande:
php artisan schedule:run
Le planificateur doit être exécuté toutes les minutes pour fonctionner correctement. Vous pouvez configurer cela en créant un travail cron avec la ligne suivante, qui exécute le planificateur toutes les minutes en arrière-plan.
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1