Blog de Notícias

Como rodar o cron do schedule:run no Windows

Como rodar o cron do schedule:run no Windows

Como rodar o cron do schedule:run no Windows

Criei uma cron que deve verificar a cada minuto se o valor da data final é menor que a atual... se sim deve atualizar o campo status dessa tabela.

class SetStatus extends Command
{

protected $signature = 'SetStatus:cron';

public function handle()
{
    //o código ta uma zona apenas pra teste...
    $sql = 'select id from promotions where dt_end < NOW()';
    $dados = \DB::select($sql);
    foreach($dados as $i)
    {
        $updateStatus = 'update promotions set status = "inativo" where id IN ('.$i->id.')';
        $return = \DB::update($updateStatus);
    }
    var_dump($return);
}

}

e adicionei no kernel

 protected $commands = [
    Commands\SetStatus::class,
];

protected function schedule(Schedule $schedule)
{
    $schedule->command('SetStatus:cron')->everyMinute();
}

A minha duvida é que sempre que rodo os comando abaixo a CRON é executada com sucesso, porém para por ai. No minuto seguinte ela não executa novamente.

php artisan SetStatus:cron
php c:/projetos/marcelo/painel/artisan schedule:run

Após rodar esses comandos acima, já não deveria ser rodado a cada minuto igual defini no kernel?

Achei algo interessante nesse link Agendar carregamento de página através do CRON na linha

# crontab -e 00 * * * * /usr/local/bin/php /home/pedrodelfino/meu-script.php

Mas não consegui desenrolar... vi algo também como criar uma .bat, mas não achei funcional.

Estou em ambiente de desenvolvimento usando Windows, alguém poderia dar uma luz?

php laravel windows scheduler

compartilharmelhorar esta pergunta

editada 5/05/18 às 13:45

gmsantos

15mil53970

perguntada 28/12/17 às 1:26

hisoka

6119

comentar

1 Resposta

ativasmais antigasvotos

1

 

No Linux, o recomendado é adicionar uma entrada no cron como é sugerido pela documentação do Laravel.

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

Esse cron rodará a cada minuto o comando schedule:run.

Em ambiente Windows, é possível usar o Agendador de Tarefas do sistema para fazer isso.

Abra o agendador de tarefas (ou task scheduler)

Task Scheduler no iniciar

Vá em criar uma nova tarefa

Criar nova tarefa

Na aba geral defina um nome para a tarefa e para ela executar mesmo que o usuário não esteja logado (isso faz rodar em background)

nome da tarefa

Na aba seguinte, crie um trigger para ser executado a cada minuto indefinidamente.

frequência da tarefa

E na aba de ações, crie uma nova ação especificando o executável do php, o comando artisan schedule run e o diretório do seu projeto.

ação da tarefa

Depois disso basta dar um ok e informar uma credencial do seu usuário e o schedule será executado como um cron.