I want to run a php script every 5 minutes that processes some simple mysql queries to identify potential errors and in case an error is recorded as a database entry the php script sends out an email.
From my research, it seems like cron jobs (or task schedulers) usually take care of running scripts at specified times, however I cannot find this option anywhere at the hosting service I am using (who runs “Parallels Plesk Panel 11.0.9” as the management interface I can access).
Therefore I tried the following “trick”:
<?php
$active = $_GET["a"];
set_time_limit(0);
while($active == 1){
include 'alert_exe.php';
sleep(300); // execute script every 5 mins
}
?>
To active the script I enter the url (“…/alert.php?a=1”). This works fine for a couple of minutes, however it seems after 2 or 3 minutes the script stops executing.
Any idea how I can prevent the stopping of the script or alternative suggestions how to achieve the automatic execution of a script every 5minutes (without being able to access cron jobs)?
Thanks!
3
Answers
try this solution:
Stop the script by restarting apache, or build in a return value from your internal script which changes while (true) to while (false)
There is a
max_execution_time
parameter which stops the script if it takes too long, 30 seconds by default, see the docs – http://php.net/manual/en/info.configuration.php#ini.max-execution-time.You can try to do
set_time_limit(0)
at the beginning of your script (see http://php.net/manual/en/function.set-time-limit.php), or change themax_execution_time
parameter itself.But in general, I would not go with such solution, it is not very reliable. Better find a hosting where you can use
cron
or you can try to look for some external service which will ping your script every 5 minutes (probably you can use services which monitor the web application health).It would not surprise me that a hosting service would protect its servers from getting overloaded with long-running scripts, and would configure a time-out after which such scripts are aborted (see PHP: Runtime Configuration Settings and max_execution_time in particular).
If you have a PC that can stay turned on, an alternative solution would be to let it send a request to the server every 5 minutes: