Cron i PHP

Linux Cron Job je automatsko pokretanje određenog programa, skripte ili servisa u odabrano vrijeme.
Kod situacije gdje se treba izvršiti PHP skripta, podešavanje je nešto drugačije, ovdje je opisana procedura.

- Potrebno je imati instaliran php-cli. (iz synaptica odabrati php5-cli ili pokrenuti naredbu: apt-get install php5-cli)
- Provjeriti da li je PHP postavljen kao CGI ili kao Apache modul.
 Unutar php skripte napišemo naredbu: phpinfo();
 Otvorimo skriptu sa browserom i između prikaza svih postavki potražimo Server API (četvrti po redu)
Ako piše CGI, server je kompajliran kao CGI, ako piše Apache, onda je PHP instaliran kao Apache module.

- Cron na Ubuntu (10.04 noviji) pozivamo naredbom:

 $ crontab -e 
(otvara se editor unutar kojeg se upisuju naredbe koje trebaju biti izvršene). Detaljnije o cron job za Ubuntu je ovdje. Na ovim stranicama je objašnjeno kako definiramo vrijeme pozivanja skripte.

- Ako imamo Apache modul, instalirati lynx, browser koji radi iz komandne linije.
Unutar crona pozvanog crontab naredbom stavimo naredbu koja treba biti izvršena:

 00 17 * * * lynx -dump http://www.somedomain.com/cron.php 

Ako imamo simple apache autentikaciju koja štiti direktorij gdje se nalazi skripta, možemo staviti ovakvu naredbu:

 00 17 * * * lynx -auth=username:password -source http://www.somedomain.com/cron.php 

- Ako je CGI modul, skriptu možemo pozvati iz cron job naredbom:

 00 17 * * * php /path/cron.php 

AKo zovemo php skriptu iz basha, princip je sličan.
Zaglavlje php skripte može imati ovakvo zaglavlje (npr. cronskripta.php):

<?php
 
#!/usr/local/bin/php -q
echo "neka skripta";
?>

Dovoljno je i samo ovo u linux shell skriptu (ovo radi i za standardnu php skriptu bez prehodno navedenog zaglavlja):

#!/bin/sh 
lynx -dump http://localhost/dir/cronskripta.php 
# (za CGI): php /path/cronskripta.php