Is it possible to run a cronjob every four days using Laravel? Without relying on each month.
Check the schedule command below
$schedule->command('file:backup')->daily();
Cron does not depend on the months.
Following the Laravel Documentation may be like this:
$schedule->command('file:backup')->cron('0 0 */4 * *');
Laravel Docs
you can use like this
$schedule->command('file:backup')->('0 0 */4 * *');
Yes it is:
$schedule->command('file:backup')->cron('0 0 */4 * *');
It seems that only everyMinute() and cron('* * * * *') are working for me. Any other methods like everyFiveMinutes, everyTenMinutes, daily, dailyAt etc, aren't working at all and always return "No scheduled commands are ready to run". My cron entry is always * * * * * so the other methods should work as well right? And yes; I've actually tried waiting for the other methods including daily, excluding yearly :P
Cron entry: * * * * * /opt/alt/php72/usr/bin/php /home/retracted/domains/retracted/artisan schedule:run >> /dev/null 2>&1
Schedule entry:
$schedule->call(function () {
$stat = new Stat();
$stat->users = User::count();
$stat->reviews = Review::count();
$stat->scholen = School::count();
$stat->save();
})->daily();
So my questions: Why don't the other methods work? How do I make the other methods work, especially daily()?
So first you have to run your cronjob every minute that is correct. With that line you run your Laravel scheduler.
So i don't know the scheduler code but it's possible that the code runs only on that minute and not backwards.
So if you need a 5 minute cronjob you have to run your scheduler every minute and then define your duration in your scheduler task.
$schedule->call(function () {
$stat = new Stat();
$stat->users = User::count();
$stat->reviews = Review::count();
$stat->scholen = School::count();
$stat->save();
})->everyFiveMinutes();
So with the function ->everyFiveMinutes(); you can run the scheduler every five minutes.
For laravel custom cron jobs to work you have to do the following:
First setup an every minute cron by executing the command "crontab
-e" and adding the following line * * * * * php /var/www/html/crontutorial/artisan schedule:run >> /dev/null 2>&1
Configure the appropriate timezone on app/config.php eg 'timezone'
=> 'Europe/Berlin',
Create a custom command that you want to execute at a specific time.
If you don't know how to create custom commands please have a look
at laravel cronjob scheduling tutorial
Schedule custom crons in app/Console/Kernel.php by adding the
following lines of code
protected function schedule(Schedule $schedule)
{
$schedule->command('my:customcommand')
->cron('01 13 * * *');
}
The cron will run every day 1.13pm using the timezone configuration in app/config.php.
Did you try specifying with the timezone? Check the below working snippet from my project:
protected function schedule(Schedule $schedule)
{
try{
$schedule->call(function (){
(new MTSnapshot)->createSnapshot();
})->timezone('Asia/Kolkata')->dailyAt('23:57');
$schedule->call(function (){
(new MTTransaction)->schedulerStatus();
})->hourly();
$schedule->call(function (){
(new MTTransaction)->syncPendingTransactions();
(new MTCommission)->processPendingCommissions();
})->twiceDaily(1, 16);
} catch(\Throwable $t){
Log::emergency($t);
}
}
For example:
$task->schedule(3500,$func);
function func(){ //do something}
How to implement schedule to execute callback function after 3500 seconds?
It's better if you make Cron Jobs:
Method to create Crob Job for every minute:
login in to server using ssh ..
type crontab -e
*/1 * * * * php SCRIPT_NAME --> this will run every minute
I am using CodeIgniter for my website. I have to use cron job to run one of controller function. I am using route in website. And also I am not using index.php in URL.
e.g. http://example.com/welcome/show, here welcome is my controller and show is function name of that controller.
I have used like this,
0 * * * * php /home/username/public_html/welcome/show
It is giving 'No such directory'
How can I set cron jon in cPanel for above URL.
Use:
php index.php welcome show
as command in your crontab. E.g.:
0 * * * * php /home/username/index.php welcome show
Source (ver. 2.2.0)
http://www.codeigniter.com/userguide2/general/cli.html
Source (ver. 3.*)
http://www.codeigniter.com/user_guide/general/cli.html
Source (ver. 4.*)
http://codeigniter.com/user_guide/cli/cli.html
I have used below cron
php /full-path-to-cron-file/cron.php /test/index
source: http://www.asim.pk/2009/05/14/creating-and-installing-crontabs-using-codeigniter/
This works for me.
Thanks to all
You can try with this one:
wget api.example.com/index.php/controller/function
You can also try:
0 * * * * /usr/bin/curl --silent --compressed http://example.com/welcome/show
Or localhost
0 * * * * /usr/bin/curl --silent --compressed http://localhost/welcome/show
I hope that is helpful.
/usr/local/bin/php /home/username/public_html/index.php controllername methodname
This worked for me.
Here is the cron I use
/usr/bin/php /home/pia/www/jobs/index.php cron newsletter
Explanation:
a) $_SERVER['DOCUMENT_ROOT'] = /home/pia/www
b) codeigniter website root = /home/pia/www/jobs
c) 'cron' = controller name
d) 'newsletter' = method name
I have done it as
00 09-18 * * 1-5 /usr/bin/php /var/www/html/app/index.php crontest
crontest is the name of the controller which also uses a model to pull data from the database and send mail periodically (between 9 AM to 6 PM on Monday to Friday every week)
I just viewed this page which explains very detail with example. Hope this will be useful to others as well.
I am using codeigniter 3.0.3 and my server is hostgator. For me, the below format is working fine
*/15 * * * * /opt/php55/bin/php /home/username/public_html/myapp/index.php reminders index
above command runs every 15 minutes, reminders in command is controller name and index is method name.
watch -n60 curl [your application path]/check_banalce/user_balance
in my case im using codeigniter and the above command executes the user_balance function which is found in check_balance controller every 60 sec.
On a Linux EC2 intance, this worked:
*/5 * * * * /usr/bin/php /var/www/html/cifolder/index.php [module] [function]
If you are using the Hostgator(or any other Linux server) then try this one.
/opt/cpanel/ea-php72/root/usr/bin/php /YOUR_HOME_DIRECTORY/YOUR_USERNAME/public_html/marketing/index.php welcome emailcampaign 1
for example for me its
/opt/cpanel/ea-php72/root/usr/bin/php /home3/adnan/public_html/index.php welcome emailcampaign 101
where
welcome is the controller name
emailcampaign is the function name of welcome controller
101 = First argument of url.
Set up cron jobs through cPanel using this procedure:
Log on to your cPanel Interface.
Go to ''Advanced' section.
Click on "Cron Jobs".
Select the specific time from the lists provided.
You should enter the command to run in the "Command" field.
* * * * * php index.php controllername functionname
1st * - minute,
2nd * - hour,
3rd * - day of month,
4th * - month,
5th * - day of week.
For more info visit : https://crontab.guru/
I am using hostgator's cPanel.
I have created a user controller and run_cron_data function inside the user controller.
Command: wget www.example.com/index.php/user/run_cron_data
See the below screenshot
If you are using cPanel then Use the following command:
/usr/bin/curl -k http://example.com/welcome/show
This works perfectly for me.
What i'm trying to do is to execute an URL once every 5 minutes, it's for an update to the database:
so first i'm accessing the crontab:
crontab -e
then i add to the existing list this line:
5 * * * * /usr/bin/curl http://www.example.com/index.php/update
and i checked the DB after 5 minutes but there's no updating info.
What is that i'm doing wrong? did i skip a step without knowing?
Thanks in advance guys!
change 5 * * * * to */5 * * * * and it will run the cron job every 5 minutes
1 : Check /var/log/syslog where you can se if the cronjob actually had been executed (not nessecarily successfully)
2 : The url looks a litte bit weird to me
http://www.example.com/index.php/update
should maybe be (typo??)
http://www.example.com/index.php?update
3 : As Ryan Hurling mentions,
5 * * * * /usr/bin/curl http://www.example.com/index.php/update
guess it should be
*/05 * * * * /usr/bin/curl http://www.example.com/index.php/update
4 :
Tried
*/05 * * * * /usr/bin/wget curl http://www.example.com/index.php/update
??