There is two ways to do that :
First : use cron script to run in every minute to check if there is report that needs to be generated. If you dont wont to run that script every minute, force user to choose time like this : 10:00 , 10:15, 10:30... and set 15 min interval.
Second : generate script with infinite loop that is run via console like php <script_name.php>
a it have to do same job as cron script in that loop. Bad solution from my opinion
I will stick with cron job solution for numeros of reasons. ;) So at the end use cron for that.