Suche…
Eine Aufgabe erstellen
Sie können mit Artisan eine Aufgabe (Konsolenbefehl) in Laravel erstellen. Von Ihrer Befehlszeile aus:
php artisan make:console MyTaskName
Dadurch wird die Datei in app / Console / Commands / MyTaskName.php erstellt . Es wird so aussehen:
<?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()
{
//
}
}
Einige wichtige Teile dieser Definition sind:
- Die
$signature
-Eigenschaft kennzeichnet Ihren Befehl. Sie können diesen Befehl später über die Befehlszeile mit Artisan ausführen, indem Sie den Befehlphp artisan command:name
ausführenphp artisan command:name
(wobeicommand:name
mit der$signature
Ihres Befehls übereinstimmt). - Die
$description
Eigenschaft wird in Artisans Hilfe / Verwendung neben Ihrem Befehl angezeigt, wenn er verfügbar ist. - In der
handle()
-Methode schreiben Sie den Code für Ihren Befehl.
Schließlich wird Ihre Aufgabe über Artisan der Befehlszeile zur Verfügung gestellt. Die protected $signature = 'command:name';
Diese Eigenschaft ist die Eigenschaft, die Sie zum Ausführen der Klasse verwenden würden.
Aufgabe zur Verfügung stellen
Sie können Artisan und Ihrer Anwendung eine Aufgabe in der Datei app / Console / Kernel.php zur Verfügung stellen .
Die Kernel
Klasse enthält ein Array namens $commands
das Ihre Befehle für Ihre Anwendung verfügbar macht.
Fügen Sie Ihrem Array Ihren Befehl hinzu, um ihn Artisan und Ihrer Anwendung zur Verfügung zu stellen.
<?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)
{
}
}
Sobald dies geschehen ist, können Sie jetzt über Artisan auf die Befehlszeile zugreifen. Wenn Sie davon ausgehen, dass für den Befehl die $signature
-Eigenschaft auf my:task
, können Sie den folgenden Befehl ausführen, um Ihre Task auszuführen:
php artisan my:task
Planen Sie Ihre Aufgabe
Wenn Ihr Befehl Ihrer Anwendung zur Verfügung gestellt wird, können Sie mit Laravel die Ausführung in vordefinierten Intervallen planen, genau wie bei einem CRON.
In der Datei app / Console / Kernel.php finden Sie eine schedule
, mit der Sie Ihre Aufgabe planen können.
<?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();
}
}
Angenommen, die $signature
-Unterschrift Ihrer Aufgabe ist my:task
Sie können sie wie oben gezeigt mit dem Schedule $schedule
Objekt Schedule $schedule
. Laravel bietet eine Vielzahl von Möglichkeiten, Ihren Befehl zu planen, wie in den kommentierten Zeilen oben gezeigt.
Festlegen, dass der Scheduler ausgeführt wird
Der Scheduler kann mit dem folgenden Befehl ausgeführt werden:
php artisan schedule:run
Der Scheduler muss jede Minute ausgeführt werden, um korrekt zu funktionieren. Sie können dies einrichten, indem Sie einen cron-Job mit der folgenden Zeile erstellen, in der der Scheduler jede Minute im Hintergrund ausgeführt wird.
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1