88

I have a web application that has to perform a repeated tasks, Sending messages and alerts, I, already, use a script page do those tasks when it loaded in the browser i.e http://example.com/tasks.php and I included it by the mean of iframe in every page of my web application.

Now I want to change this to use CRON jobs because the first approach may leads to jam performance, So How could I make a CRON job that visits http://example.com/tasks.php. However, I don't want this CRON job creating output files such as day.*!

I host the application on shared hosting service that permits CRON jobs via cPanel.

General Grievance
  • 4,555
  • 31
  • 31
  • 45
SaidbakR
  • 13,303
  • 20
  • 101
  • 195

11 Answers11

245
* * * * * wget -O - http://yoursite.com/tasks.php >/dev/null 2>&1

That should work for you. Just have a wget script that loads the page.

Using -O - means that the output of the web request will be sent to STDOUT (standard output)

by adding >/dev/null we instruct standard output to be redirect to a black hole. by adding 2>&1 we instruct STDERR (errors) to also be sent to STDOUT, and thus all output will be sent to a blackhole. (so it will load the website, but never write a file anywhere)

Mitch Dempsey
  • 38,725
  • 6
  • 68
  • 74
28

You can use curl as is in this thread

For the lazy:

*/5 * * * * curl --request GET 'http://exemple.com/path/check.php?param1=1'

This will be executed every 5 minutes.

Community
  • 1
  • 1
Jerzy Drożdż
  • 438
  • 6
  • 8
25

You don't need the redirection, use only

* * * * * wget -qO /dev/null http://yoursite.com/tasks.php
Diego Torres Milano
  • 65,697
  • 9
  • 111
  • 134
10

You can also use the local commandline php-cli:

* * * * * php /local/root/path/to/tasks.php > /dev/null

It is faster and decrease load for your webserver.

mrraka
  • 133
  • 6
8

i use this commands

wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1

Cron task:

* * * * * wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1
Abbas Arif
  • 372
  • 4
  • 16
  • 1
    This one need some explaining, but it works very well. Especially if, like me, you have an ampersand in your URL. Putting the url inside quotes is a solution. Why do you putt /dev/null before the url ? – Gfra54 Jul 01 '15 at 11:01
  • 2
    This is probably late reply but its never too late. Reason is: **/dev/null** is a special filesystem object that throws away everything written into it. Redirecting a stream into it means hiding an output. The **2>&1** part means "redirect both the output and the error streams". – Abbas Arif Mar 29 '16 at 00:05
  • Ok so, it means that the content of wget is redirected to /dev/null (so it is basically deleted and ignored) ? Thanks – Gfra54 Apr 19 '16 at 14:24
  • 1
    Yes output sent to **/dev/null** is ignored. – Abbas Arif Apr 20 '16 at 19:56
2

you can use this for url with parameters:

lynx -dump "http://vps-managed.com/tasks.php?code=23456"

lynx is available on all systems by default.

Wicher Visser
  • 1,513
  • 12
  • 21
2

You can use this command:

links https://www.honeymovies.com
Abdul Alim
  • 110
  • 7
2

U can try this :-


    wget -q -O - http://www.example.com/ >/dev/null 2>&1

Walk
  • 1,531
  • 17
  • 21
2

* * * * * wget --quiet https://example.com/file --output-document=/dev/null

I find --quiet clearer than -q, and --output-document=/dev/null clearer than -O - > /dev/null

Val Kornea
  • 4,469
  • 3
  • 40
  • 41
1

For Cron job to work you just need to hit the url, without any output and without downloading anything.

I am using only the wget with this two parameters:

*/2 * * * * wget -q --spider https://example.com/

*/2 : run every 2 minutes

‘-q’ :Turn off Wget’s output.

--spider : When invoked with this option, Wget will behave as a Web spider, which means that it will not download the pages, just check that they are there.

Documentation: https://www.gnu.org/software/wget/manual/wget.pdf

BogdanPopa
  • 305
  • 2
  • 5
0

Here is simple example. you can use it like

wget -q -O - http://example.com/backup >/dev/null 2>&1

and in start you can add your option like (*****). Its up to your system requirements either you want to run it every minute or hours etc.

Saeed Awan
  • 416
  • 6
  • 8