Ich habe oben bereits die Antwort geschrieben: sleep().Mein Script wird mit einem (minütlichen) Cron angestoßen, lädt sich alle 5 Sekunden neu und nach einer Schleife von 12 Wiederholungen schließt es sich. Dann ist die Minute vorbei und der Cron öffnet die Datei dann wieder. Ginge das irgendwie?
Das heißt aber trotzdem nicht, dass das nicht gegen die Bestimmungen deines Shared Hosting Betreibers verstößt. Ggf. sperrt er dann unangekündigt deine Seite.
Gibt es keine Möglichkeiten, die Kursdaten auch für die Vergangenheit z. B. für den ganzen letzten Tag zu erhalten? Dann bräuchtest du dein Skript nur einmal pro Tag laufen lassen.