...damit kannst du natürlich auch auf die Nase fallen, denn die Zeit, die du für die Ausführung benötigst hängt ja von der Auslastung des Servers und womöglich weiteren Faktoren ab. Geschickter ist es, nach jedem Durchlauf der oft zu wiederholdenen Routine zu
prüfen, wie lange das Skript bereits läuft und dann rechtzeitig abzubrechen und eben möglichst kleine Einheiten zu wählen.
Und das 'Dann lädt sich die Seite selbst neu' funktioniert ja nicht. Du kannst höchstend die Bitte an einen Client schicken, die Seite nochmal aufzurufen - aber einen Client brauchst du dafür natürlich. Wenn du umgekehrt rangehst und nicht 'versendet' vermerkst, sondern 'muss noch versandt werden', dann kannst du vor dem Auftrag alle Empfänger damit und ev. mit einem Parameter, der auf einen bestimmten Autrag (was soll wann wie gemacht werden...) verweist bestücken und diesen Eintrag wieder löschen, wenn der Job getan ist. Dann ist es wurscht, wer das Skript wann wie aufruft, denn sobald es irgendwie aufgerufen wird, legt es los, die noch unerfüllten Aufgaben zu erledigen.
So kannst du diesen Job durch einen CronJob starten oder z.B. auch durch einen JavaScript-Code in einigen Webseiten, der eine bestimmte Ressource läd und dann das auch gleich wieder abbricht (dein Skript läuft ja dann weiter).
> Skripte werden im Rahmen einer Web-Applikation gestartet durch den
> Klick eines Benutzers
Nach deiner Lösung, 'humer' müsste der Benutzer ja jetzt so lange vor der Kiste sitzen bleiben, bis alle Mails versendet sind.
Mir fällt grad ein: Das Neuladen geht ja wahrscheinlich doch. Man könnte einfach in diesem Skript, das einen bestimmten Job auszuführen hat
prüfen, ob der Job bereits erledigt ist. Wenn nicht, dann einen HTTP-Request mit einem kurzen Timeout an sich selber machen und dann den gewünschten Job eben soweit machen, wie es die Laufzeitlimits etc. erlauben. Wenn du sauber, also ohne Race Conditions programmierst, müsste das ja eigentlich gehen. (Vielleicht war es ja das, 'humer', das du mit 'sich selbst neu laden' meintest)
Basti
PS zum eigentlichen Thema:
Kannst ja auch mal die Option mit einer .haccess überschreiben und im Skript
prüfen, ob der Wert übernommen wurde (ini_get()).