In many projects, you need use crontab (cron jobs) to execute some tasks as sending email or delete waste record in DB. With Laravel Project, you can do this easier.

Be strong enough to let go and patient enough to wait for what you deserve
Create a command in Laravel 4:
|
$ php artisan command:make FirstCommand Command created successfully. |
With command above, Laravel will create a file named FirstCommand.php in directory app/commands/
FirstCommand.php contains source code as below:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
<?php use Illuminate\Console\Command; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; class FirstCommand extends Command { /** * The console command name. * * @var string */ protected $name = '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 fire() { // } /** * Get the console command arguments. * * @return array */ protected function getArguments() { return array( array('example', InputArgument::REQUIRED, 'An example argument.'), ); } /** * Get the console command options. * * @return array */ protected function getOptions() { return array( array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), ); } } |
You should change this line:
|
protected $name = 'command:name'; |
E.g: I changed to
|
protected $name = 'user:active'; |
Laravel Command supports you use parameters in your command. To add or remove parameters, you should look at getArguments and getOptions functions
And the most important function is fire() function. The command will execute source code that is wrote in that function.
I did the most simple changed to show you the easiest to understand Laravel Command. Please see file FistCommand.php after changing:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
<?php use Illuminate\Console\Command; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; class FirstCommand extends Command { /** * The console command name. * * @var string */ protected $name = 'user:active'; /** * 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 fire() { echo "User Actived"; } /** * Get the console command arguments. * * @return array */ protected function getArguments() { return array( ); } /** * Get the console command options. * * @return array */ protected function getOptions() { return array( array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), ); } } |
Next step, you need to register the command with Laravel CLI. So easy, you open app/start/artisan.php file, and add one line as below:
|
Artisan::add(new FirstCommand); |
You are done creating Laravel Command. To test, you could use command below:
|
$ php artisan user:active User Active |
The output above mean you successfully register a command.
Finally, put your command into the crontab:
Add line (run command every 2 minutes):
|
*/2 * * * * php path_to_laravel_project/artisan user:active |
That’s all. Thank you for talking time to read this.