Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel 5 schedule not working

My laravel version is 5.0.28, I build on cloud9, and I added this command to my cron:

#!/bin/bash
PATH=/usr/bin
* * * * * php /home/ubuntu/workspace/app/artisan scheduled:run 1>> /dev/null 2>&1

I added this code on my Kernel.php. I referenced this site: https://laravel-news.com/2014/11/laravel-5-scheduler/

<?php namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use App\Http\Controllers\ApiController;

class Kernel extends ConsoleKernel {

    protected $commands = [
        'App\Console\Commands\Inspire',
    ];

    protected function schedule(Schedule $schedule)
    {
        $schedule->call('ApiController@test_job')->hourly();
    }
}

I waited and it still didn't work, so I tried to use the command php artisan schedule:run, and I got: No scheduled commands are ready to run.

I searched and found this answer: Laravel 5 "Class does not exist" when using the scheduler

So I modified my code. Also, this code had no specified time, so I modified my cron to specify a time, but it still doesn't work. I have no more ideas. please help. Thanks.

code

$schedule->call(join('@', [ApiController::class, 'test_job']));

cron

0 0,3,6,9,12,15,18,21 * * * php /home/ubuntu/workspace/app/artisan schedule:run 1>> /dev/null 2>&1
30 1,4,7,10,13,16,19,22 * * * php /home/ubuntu/workspace/app/artisan schedule:run 1>> /dev/null 2>&1
like image 891
lighter Avatar asked Jun 05 '15 10:06

lighter


2 Answers

first to Test if cron is running in your server or localhost type:

> sudo service cron status

if not installed:

> sudo apt-get install cron

to enable laravel's scheduler:

> crontab -e

and you can select an editor if not vim opens directly. Be sure to enter there this line at the bottom:

* * * * * php /path_from_root_to_laravel_proj_folder/artisan schedule:run 1>> /dev/null 2>&1

to Test if you have setup inside laravel the scheduler right, run this from your projects folder:

>php artisan schedule:run

this should execute the tasks and tell you what is doing.

like image 117
Grigoreas P. Avatar answered Nov 15 '22 19:11

Grigoreas P.


In my case, the scheduler actually run but encountered an error because of lower php version, beside artisan path (which is your project folder), I had to set the php path as below:

* * * * * /path_to_php_folder/bin/php /path_from_root_to_laravel_proj_folder/artisan schedule:run 1>> /dev/null 2>&1
like image 44
Irfandi D. Vendy Avatar answered Nov 15 '22 18:11

Irfandi D. Vendy