Je nachdem wie viele Rechte du für deinen Server hast, kannst du in der php.ini den Parameter 'max_execution_time' anpassen.
Eventuell ist das auch zur Laufzeit über:
ini_set('max_execution_time', integer );
ändern. 'integer' ist dabei durch die jeweilige maximale Laufzeit in Sekunden auszutauschen, also beispielsweise durch 600 für 10 Minuten Laufzeit. Wenn es dein Server zulässt, wie gesagt.
Eine andere Möglichkeit wäre, deine Abfrage zu stückeln. Du sendest 50 Querys und überführst dann per 'echo' per z.B. JavaScript auf die selbe (dynamische) Seite weiter und hinterlässt eben Information, an welcher Stelle weiter zu arbeiten ist. Ggf. musst du für deaktiviertes JavaScript auch einen "manuellen" Link anbieten. Würde so aussehen:
<script type="text/javascript">
<![CDATA[
document.location.href='http://www.seite.de/?routine=2';
]]!>
</script>
Ob die bisherige Laufzeit durch eine mit PHP gesetzte Weiterleitung zurück gesetzt wird, weiß ich nicht, aber es hindert dich ja nichts daran, das auszuprobieren [header("Location: http://www.seite.de/?routine=12")] Ich vermute allerdings, die Antwort lautet nein. Wäre aber die schönste Möglichkeit.
Notfalls wäre auch die Ausgabe eines html-Weiterleitungsheaders eine Variante:
<meta http-equiv="refresh" content="0; URL=http://seite.de?routine=2">