Artisan CLI
Introdução
Artisan é o nome da interface da linha de comando incluída no Laravel. Esta interface fornece um bom número de comandos auxiliares para que você use durante o desenvolvimento de sua aplicação. O artisan é impulsionado pelo poderoso componente de Console do Symfony framework.
Uso
Listando todos os comandos Disponíveis
Para ver a lista de todos os comandos Artisan, você deve utilizar o comando list
.
php artisan list
Visualizando a Tela de Ajuda para um Comando
Todos os comandos também incluem uma tela de "help" que mostra e descreve os comandos e seus respectivos parâmetros e opções. Para ver a tela de "help" (ajuda), simplesmente preceda o nome do comando com help
.
php artisan help migrate
Especificando O Ambiente de Configuração
Você pode especificar o ambiente em que o comando é executando usando o prefixo --env
:
php artisan migrate --env=local
Exibindo Sua Versão Atual do Laravel
Você também pode ver a versão atual do instalação do seu Laravel utilizando a opção --version
:
php artisan --version
Chamando os Comandos de Fora do CLI
Algumas vezes você pode desejar executatar o comando Artisan de fora do CLI. Por exemplo, vocẽ pode desejar executar o comando Artisan de uma rota HTTP. Apenas use a fachada Artisan
:
Route::get('/foo', function()
{
$exitCode = Artisan::call('command:name', ['--option' => 'foo']);
//
});
Você pode até enfileirar comandos Artisan para que eles sejam processados em segundo plano pelo seu queue workers:
Route::get('/foo', function()
{
Artisan::queue('command:name', ['--option' => 'foo']);
//
});
Agendando Comandos Artisan
No passado, desenvolvedores teêm gerado uma entrada de Cron para cada comando que eles queriam agendar. Contudo, isto é uma baita dor de cabeça. Seu console de agendamento não está mais no controle de origem, e você deve realizar uma conexão SSH com o seu servidor para dar entradas de Cron. Vamos fazer sua nossas vidas mais fáceis. O comando agendados do Laravel lhe permite nativamente definir seu comando agendador apenas com o próprio Laravel, e apenas uma entrada de Cron se faz necessária no seu servidor.
Seu comando agendador é armazenado no arquivo app/Console/Kernel.php
. Dentro desta classe você verá o método schedule
. Para ajudar você a começar, um simples exemplo é incluído com o método. Sinta-se a vontade para adicionar quantas tarefas agendadas você desejar para o objeto Schedule
. A única entrada de Cron que você precisa adicionar para o seu servidor é esta:
* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1
Este Cron(tarefa agendada) chamará o comando de agendamento do Laravel todo minuto. Em seguida, Laravel avalia sua tarefa agendada e executa os que são devidos. Não poderia ser mais fácil do que isto.
Mais Exemplos de Agendamento
Vamos dar uma olhada em mais alguns exemplos de agendamentos:
Agendamentos com Closures
$schedule->call(function()
{
// Do some task...
})->hourly();
Comandos de Agendamento via Terminal
$schedule->exec('composer self-update')->daily();
Expressão Manual de Cron
$schedule->command('foo')->cron('* * * * *');
Tarefas Frequentes
$schedule->command('foo')->everyFiveMinutes();
$schedule->command('foo')->everyTenMinutes();
$schedule->command('foo')->everyThirtyMinutes();
Tarefas Diárias
$schedule->command('foo')->daily();
Tarefas Diárias em Um Horário Específico (24 Horas)
$schedule->command('foo')->dailyAt('15:00');
Tarefas Realizadas Duas Vezes ao Dia
$schedule->command('foo')->twiceDaily();
Tarefas Executadas Todos os Dias da Semana
$schedule->command('foo')->weekdays();
Tarefas Realizadas em um Dia da Semana em Específico
$schedule->command('foo')->weekly();
// Schedule weekly job for specific day (0-6) and time...
$schedule->command('foo')->weeklyOn(1, '8:00');
Tarefas Mensais
$schedule->command('foo')->monthly();
Tarefas que são executadas em dias específicos da semana
$schedule->command('foo')->mondays();
$schedule->command('foo')->tuesdays();
$schedule->command('foo')->wednesdays();
$schedule->command('foo')->thursdays();
$schedule->command('foo')->fridays();
$schedule->command('foo')->saturdays();
$schedule->command('foo')->sundays();
Previnindo que tarefas de Prevent Jobs From Overlapping
Por padrão, tarefas agendadas serão executadas até mesmo que a instância anterior da tarefa ainda estiver sendo executada. Para que isto não ocorra, você pode usar o método withoutOverlapping`:
$schedule->command('foo')->withoutOverlapping();
In this example, the foo
command will be run every minute if it is not already running.
Limitando os Ambientes em que as Tarefas Devem ser Executadas
$schedule->command('foo')->monthly()->environments('production');
Indicando se a Execução da Tarefa Deve ser Relizada Mesmo Quando Aplicação Está em Manutenção
$schedule->command('foo')->monthly()->evenInMaintenanceMode();
Permitindo que a Tarefa Seja Executada Apenas Quando o Retorno do Callback Seja Verdadeiro
$schedule->command('foo')->monthly()->when(function()
{
return true;
});
Envie um E-mail com o resultado da tarefa.
$schedule->command('foo')->sendOutputTo($filePath)->emailOutputTo('foo@example.com');
Note: You must send the output to a file before it can be mailed.
Envie o resultado da tarefa agendada para um diretório específico
$schedule->command('foo')->sendOutputTo($filePath);
Ping uma URL depois que a tarefa executar
$schedule->command('foo')->thenPing($url);
Usando a método thenPing($url)
requere que a biblioteca Guzzle HTTP esteja instalada. Você pode adicionar a Guzzle 5 no seu projeto adicionando no seu arquivo `composer.json a seguinte linha:
"guzzlehttp/guzzle": "~5.0"