I am trying to set up scheduler in Laravel.
Here is my crontab which I debugged and works fine - atleast with my cron job
* * * * * /bin/echo "foobar" >> /my_path/example.txt
I don't know if this one works:
* * * * * php /var/www/myproject/artisan schedule:run 1>> /dev/null 2>&1
Here is my schedule function in Kernel:
protected function schedule(Schedule $schedule)
{
$schedule->command('inspire')
->everyMinute();
}
When I am in my project and try php artisan inspire it actually works, so I expected it to fire every minute, but it won't do anything. Nothing happens.
Any ideas?
This part just puts the output into oblivion so you'll never see it:
>> /dev/null 2>&1
Why not try:
* * * * * php /var/www/myproject/artisan schedule:run >> /my_path/example.txt
And check to see if the cron is run in /my_path/example.txt
The default inspire command essentially just echo's a quote so the only way to see it in a cron is to output it to a file on the server.
You can do this using something similar to this:
$schedule->command('inspire')->everyMinute()->appendOutputTo($filePath);
Further details: https://laravel.com/docs/5.4/scheduling#task-output
you should try something
like * * * * * cd /Path/TO/YOUR_PROJECT/ && php artisan schedule:run >> /dev/null 2>&1
Am also using laravel 4.2, Here is my Cron command which currently working good.
0 0 * * * /usr/local/bin/php /*****/******/public_html/artisan command:firemyevent
Hope It will help you.
in my case, I had to explicity a php version compatible with laravel, in my cron job:
cd /path/to/my/project && /usr/local/bin/ea-php71 artisan schedule:run > /dev/null 2>&1
I made it run in mac through:
* * * * * cd /Applications/XAMPP/xamppfiles/htdocs/rcraze && /usr/local/bin/php artisan schedule:run >> /dev/null 2>&1
You have to put full path of PHP (you can get it through whereis php command in MAC terminal) and pull path of your project.
Related
I'm trying to use Laravel Task Schedule. So I create crontab -e which is like blow.
* * * * * cd /var/www/html/laravel && php artisan schedule:run >> /dev/null 2>&1
After this I bind my commands to Laravel's App/Kernel which is like below:
protected $commands = [
//
Commands\mitsui::class,
Commands\sumitomo::class,
Commands\nomura::class,
];
And schedule:
protected function schedule(Schedule $schedule)
{
$schedule->command('bot:mitsui')->everyMinute();
$schedule->command('bot:sumitomo')->everyMinute();
$schedule->command('bot:nomura')->everyMinute();
}
Actually it's weekly but I'm trying to checking is it working or not. That's why make it everyMinute But actually it's not working. commands are not running. Do I missing something here?
change this line
* * * * * cd /var/www/html/laravel && php artisan schedule:run >> /dev/null 2>&1
to
* * * * * php /var/www/html/laravel/artisan schedule:run >> /dev/null 2>&1
I have the following method in my Kernel.php (the one under Console of course):
protected function schedule(Schedule $schedule)
{
$schedule->exec("touch lorem.txt")->everyMinute();
}
And I have the following cronjob added through the cpanel:
* * * * * cd /home/oeit/oe && php artisan schedule:run >> /dev/null 2>&1
I am supposed to see a lorem.txt file in the disk. However when I search for it using find / -name "lorem.txt" the file doesn't appear, which makes me believe that my cronjob is not working properly. I am on a shared hosting.
How do I fix this?
I had to specify the full path for the php executable:
* * * * * cd /home/oeit/oe && /usr/local/bin/php artisan schedule:run >> /dev/null 2>&1
If you're on shared hosting, it's entirely possible that it is running, but you don't have access to use $schedule->exec on the server.
I would take a look in the storage/logs/laravel.log file to see if you are getting any errors.
I have a hard time running cron job on Digitalocean. I noticed there are two different cron files, I get to one by getting to /etc/crontab and other one by entering the command crontab -e.
To make it more confusing, both of those have somewhat different "layout". First one:
* * * * * root php /var/www/Laravel artisan schedule:run >> /home/laravel.log
and second one:
* * * * * php /var/www/Laravel artisan schedule:run >> laravel.log
Here is Laravel scheduler part:
protected $commands = [
'App\Console\Commands\SyncAPIs',
];
/**
* Define the application's command schedule.
*
* #param \Illuminate\Console\Scheduling\Schedule $schedule
* #return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('media:sync')->everyThirtyMinutes();
// sync for yesterday to eliminate discrepancies
$schedule->command('media:sync ' . Carbon::yesterday())->dailyAt(6);
}
The thing is that the laravel.log does get created, but I see nothing in it, and I don't know if my commands actually get ran. Does that mean that cron IS actually running? How can I debug the issue as I don't see in the database that cron filled it. When I go to the folder /var/www/Laravel and execute the commands which are supposed to be called in scheduler, dataabse fills correctly.
cd ~
crontab -u root -e
* * * * * php /var/www/laravelprojectname/artisan schedule:run 1>> /dev/null 2>&1
service cron restart
grep -i cron /var/log/syslog|tail -3
I think this should help
May be you need to change this line :
* * * * * php /var/www/Laravel artisan schedule:run >> laravel.log
to :
* * * * * /usr/bin/php /var/www/Laravel artisan schedule:run >> laravel.log
I found an answer being actually:
* * * * * php /var/www/Laravel/artisan schedule:run >> laravel.log
php works globally, but artisan needs to be shown the path which is in my Laravel main folder
I am using Ubuntu 16.04 LTS, and I want to set up cron job for my laravel services. this is how I set up
5 * * * * php /var/www/myapp/artisan schedule:run 1>> /dev/null 2>&1
and in my laravel app kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->command('email:send')
->dailyAt('03:30');
$schedule->command('queue:work')->everyFiveMinutes();
}
it did not trigger, I don't know why it did not trigger the command
Thank you in advance.
You should use this:
*/5 * * * * php /var/www/myapp/artisan schedule:run 1>> /dev/null 2>&1
Trying to Scheduling Artisan Commands
https://laravel.com/docs/5.0/artisan
* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1
Can someone please show me how do I know the /path/to/artisan ?
artisan is in your Laravel project root. So, if your project path looks like /home/laravel-proj/ use this:
* * * * * php /home/laravel-proj/artisan schedule:run 1>> /dev/null 2>&1
extending the answer given by #Alexy Mezenin , to get current working directory on ubuntu use pwd command.
For windows user it may be cd
So if you have a project in desktop/blog.
go to the blog directory and run pwd command and you'll get the path to artisan which is /home/user/Desktop/blog
Then you'll use this:
* * * * * php /home/user/Desktop/blog/artisan schedule:run 1>> /dev/null 2>&1
Artisan is located in your project directory. For instance, my crontab shows something like this:
* * * * * /usr/bin/php /var/www/projectfolder/artisan command
On linux systems:
Using terminal > Go to project folder-> run pwd.The path you should get is the absolute path to your project.
On Windows, I think you need to run cd