tags:

views:

193

answers:

2

I'm developing a web application that requires the use of Cron. I'd like to make it easy to setup with an auto install process like Wordpress. I have no problems writing the install script up en till its time to set up Cron. Please tell me if I can do this.

A: 

A quick google search brought up this article.

Jan Hančič
The user under which PHP runs has to be allowed to edit the crontab for this approach. Since the crontab gets replaced it can conflict with other cron jobs.
deamon
thanks for the link.
Robert Hurst
+4  A: 

You just have to create the cron file, then use exec to set up that cron:

$cron_file = 'cron_filename';
// Create the file
touch($cron_file); 
// Make it writable
chmod($cron_file, 0777); 
// Save the cron
file_put_contents($cron_file, '* * * * * your_command'); 
// Install the cron
exec('crontab cron_file');

This requires that the user which PHP is run under has the right to make crontabs. This cron file will by default replace any other crons for that user, so make sure to ask the user if he wants to apply the cron. Also make sure the folder you're writing the crontab file in is writable.

Tatu Ulmanen
Sweet thanks for that.
Robert Hurst
Don't use `chmod 0777`. The rights should be limited to the minimum, in this case `0600`. And, as already said, the PHP interpreter must be allowed to edit the crontab and even that is the case, it can conflict with other cronjobs from the same user.
deamon
so if CronTab is not accessible to Apache its no go right? This is what I'm afraid of.
Robert Hurst