php - instalar - Configurar y probar la programación de tareas de Laravel
laravel tutorial (2)
Si desea probar la programación de eventos por unidades, puede usar este ejemplo. Se basa en el comando inspire predeterminado:
public function testIsAvailableInTheScheduler()
{
/** @var /Illuminate/Console/Scheduling/Schedule $schedule */
$schedule = app()->make(/Illuminate/Console/Scheduling/Schedule::class);
$events = collect($schedule->events())->filter(function (/Illuminate/Console/Scheduling/Event $event) {
return stripos($event->command, ''YourCommandHere'');
});
if ($events->count() == 0) {
$this->fail(''No events found'');
}
$events->each(function (/Illuminate/Console/Scheduling/Event $event) {
// This example is for hourly commands.
$this->assertEquals(''0 * * * * *'', $event->expression);
});
}
Ambiente
Versión de Laravel: 5.1.45 (LTS)
Versión de PHP: 5.6.1
Descripción
Intento ejecutar un comando cada 1 minuto usando Laravel Task Scheduling .
Intento
He agregado esta línea a mi archivo de pestañas cron
* * * * * php artisan schedule:run >> /dev/null 2>&1
Aquí está mi /app/Console/Kernel.php
<?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 = [
/App/Console/Commands/Inspire::class,
];
/**
* Define the application''s command schedule.
*
* @param /Illuminate/Console/Scheduling/Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command(''inspire'')->hourly();
$schedule->command(''echo "Happy New Year!" '')->everyMinute(); //<---- ADD HERE }
}
He agregado esta línea $schedule->command(''echo "Happy New Year!" '')->everyMinute();
Pregunta
¿Cómo pruebo esto?
¿Cómo disparo mi eco para visualizar?
¿Cómo sé si lo que hice no está mal?
Estoy abriendo a cualquier sugerencia en este momento.
¡Cualquier sugerencia / sugerencia / ayuda en esto será muy apreciada!
command()
ejecuta un comando artesanal. Lo que está tratando de lograr (emitir un comando al sistema operativo) lo realiza el exec(''echo "Happy New Year!"'')
Las pruebas dependen de lo que quiere probar:
- Si el programador (cada minuto) está funcionando?
En este caso, no es necesario. Se prueba en el código de marco original.
- Si el comando tiene éxito?
Bueno, puedes ejecutar manualmente el php artisan schedule:run
y ver el resultado.
El planificador no produce ninguna salida en el valor predeterminado ( >> /dev/null 2>&1
). Sin embargo, puede redireccionar la salida de los scripts writeOutputTo()
a cualquier archivo encadenando writeOutputTo()
o appendOutputTo()
( https://laravel.com/docs/5.1/scheduling#task-output ).
Para una lógica más compleja, escriba un comando de consola en su lugar ( https://laravel.com/docs/5.1/artisan#writing-commands ) y use el command()
- de esta manera usted puede escribir un buen código comprobable.