scheduled - Programación de tareas Laravel 5.1 en Windows
task scheduling laravel (4)
Estoy tratando de conseguir que la Programación de tareas de Laravel 5.1 funcione en IIS. Cuando ejecuto un archivo por lotes utilizando el administrador de tareas de Windows, ejecutará la tarea solo una vez. ¿Cómo puedo hacer que funcione -> everyMinute ()?
Archivo por lotes de Windows:
cd c:/inetpub/myapp
c:/PROGRA~2/PHP/php.exe artisan schedule:run 1>> NUL 2>&1
El kernel:
class Kernel extends ConsoleKernel
{
protected $commands = [
/App/Console/Commands/MyCommand::class,
];
protected function schedule(Schedule $schedule)
{
$schedule->command(''test'')->everyMinute();
}
}
El comando:
public function handle()
{
log::info(''test'');
}
Debe crear una tarea programada que ejecutará ese archivo por lotes cada minuto.
Para hacerlo:
Presione Win + R y ejecute
taskschd.msc
En el panel derecho, haga clic en Crear tarea básica y asígnele un Nombre + Descripción.
Haga clic en Siguiente y seleccione la opción Iniciar un programa , luego navegue hasta el archivo por lotes y selecciónelo. No es necesario llenar los otros campos.
Seleccione "Abrir las propiedades de esta tarea ..." y luego Terminar.
En la pestaña Trigger , puede cambiar entre Daily o At Logon (como lo hago yo).
Aquí está la parte que no está documentada, abra el dropbox e inserte 1 usando el teclado, esta es la única manera de establecer el tiempo de repetición en 1 minuto (incluso si el menú desplegable no lo muestra).
Larevel
necesita elcronjob
para ejecutarse cada minuto, de lo contrario no funcionará como se esperaba.También verifique "Indefinidamente" para ejecutarlo por última vez.
Espero eso ayude.
La Ayuda del Programador de tareas de Windows está aquí , si tiene problemas.
Eche un vistazo al documento del planificador de tareas .
Comenzando el programador
Aquí está la única entrada de Cron que necesita agregar a su servidor:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
Este Cron llamará al programador de comandos de Laravel cada minuto. Luego, Laravel evalúa sus tareas programadas y ejecuta las tareas vencidas.
En su caso, utiliza el programador de tareas de Windows en lugar de Cron, pero lo importante es llamar al artisan schedule:run
cada minuto. Cada vez que se ejecuta este comando, verifica su programación y ejecuta las tareas / comandos agregados.
artisan schedule:run
no inicia un proceso de larga ejecución que se mantiene activo para ejecutar tareas hasta que lo mate. Como dije, debe llamarse cada minuto.
Windows sí es compatible con el Programador de Laravel , pero debe ejecutar el comando por su cuenta varias veces. Como no podemos usar el Programador de tareas de Windows para ejecutarlo cada 1 min, como lo podemos hacer con linux crontab. Si está usando Windows para el entorno de desarrollo y quiere probar si el comando está funcionando, puede intentar esto
Si ejecuta el
horario de artesanos php: ejecutar
comando para múltiples veces dando una brecha mínima para cada prueba funcionará.
Si quieres ejecutar directamente el comando, puedes seguir esto.
"path / to / php.exe" "artesanal" YourCommand> "NUL" 2> & 1 &
Puede encontrar la ruta de su php.exe usando el paso siguiente.
Ejecute "where php.exe" en el símbolo del sistema
Tengo una única solución Create to file Executable xxx.cmd, abra el archivo y escriba el siguiente texto.
@echo off
echo - = = = Schedule Run Jobs == = = = -
CD d: && CD /xampp/htdocs/folderlaravel && php artisan schedule:run
timeout 86400
CD d: && CD /xampp/htdocs/folderlaravel && "Schedule.cmd"
pause
@cls
Lo que hace es correr y ejecutarse en un ciclo infinito dependiendo del tiempo de espera que le den. En este caso 86400 => 1 día.
Es algo ambiguo pero funciona :)
Espero que te sirva