I have a php script that needs to run once every 5 minutes. Currently I’m using a cron job to run it (and it works great) but my host only allows a minimum time of 15 minutes.
So my question is, can I use visitors to trigger the running of a php script every 5 minutes. I can easily just record the last time it ran, and re-run it based on elapsed time.
However, I’m worried about race conditions. It is important that the script only gets run once every 5 minutes.
My script takes about 60 seconds to run. It writes to a couple files during this time. If the script ran more than once it would corrupt files. Also, if I get no vistors for 10 minutes, then running once when the next vistor arrives is fine.
Is there some standard way to accomplish this task?
Thanks!
Have you considered just having your script run an infinite loop with a
sleepto wait 5 minutes between iterations?Alternatively, you could have a file (for example, is_running), and get an exclusive lock on it at the start of your script which is released at the end. At least this way you will not do anything destructive.
You could also combine these two solutions.
And then have the cron job still run every 15 minutes. If the process is still running, it will just bail out, otherwise it will relaunch and resume updating every 5 minutes.