I've never tried this, but this has occurred to me before:
If your site gets enough traffic, you could put something in your home page to check the current time (the time of the user's visit) against the time you want your reporting script to run (which you could retrieve/store in a flat file or a db).
Something of the form
$time_to_run_script = get_next(); //get value for $time_to_run_script, from flat file or db
if ($now>$time_to_run_script) {
schedule_next(); //set value for $time_to_run_script, in flat file or db
run_script();
}
If the current time is after the time you want your script to run, then reset the value in the flat file/db and run the script; else do nothing. But this would only work if you're guaranteed to have traffic, and it probably wouldn't run exactly on the time schedule you want.
If I ever hear that you actually employ this strategy, I will go buy myself a beer to celebrate 😃