2016-06-29 13 views
1

Ich spiele herum mit der Verwendung ini_set('ignore_user_abort', true/false);, um zu erlauben oder zu verbieten PHP-Skripte weiter auf dem Server laufen, auch wenn der Client gegangen ist (d. H. Von der Seite weg navigiert). Wenn ich den Wert auf "false" setze, stoppt das Skript sofort, wenn der Benutzer weg navigiert. Gibt es eine Möglichkeit, eine Funktion vor dem Ende des Skripts auszuführen?PHP - Run Function Wenn Seite abgebrochen

Wenn der Benutzer weg navigiert, möchte ich im Grunde ein paar Dinge elegant schließen und einen Datensatz in eine Datenbank einfügen.

+0

navigiert weg und 'abbricht' sind nicht dasselbe, wenn die Skripte fertig sind, und der Benutzer weg navigiert, ist das eine andere Sache als verlassen, während Skripte laufen. Da PHP serverseitig ist, sind die Skripts normalerweise fertig, bevor der Benutzer die Seite überhaupt sieht. –

+0

Das Skript wird gestartet, nachdem die Seite mit Ajax geladen wurde, es ist wie ein 5-Minuten-Skript, mit WAHR läuft es auch, wenn der Benutzer die Registerkarte schließt (getestet) – Crizly

+0

gut ajax, das ist anders, Details in der ursprünglichen Frage würde ** wirklich ** help –

Antwort

2

Setzen Sie ignore_user_abort auf true und verwenden Sie dann connection_aborted(), um zu überprüfen, ob der Benutzer abgebrochen wurde. Ein möglicher Ort, um zu überprüfen, könnte ein shutdown callback sein.

+0

Ich glaube nicht, dass das funktioniert, denn nachdem der Benutzer abbricht, bricht der Server auch ab und Ihr Code wird nicht ausgeführt. Wahrscheinlich ist das Beste, was getan werden kann, eine Überprüfung von 'connection_aborted()', bevor entschieden wird, ob aufgeräumt und beendet werden soll oder mit der Verarbeitung fortfahren soll. Es scheint keine Möglichkeit zu geben, eine Callback-Funktion für ein Abbruch-Ereignis zu registrieren. (bearbeitet) sah deine Antwort - egal. –

+0

@JuanTomas Nein, wenn 'ignore_user_abort' auf' true' gesetzt ist, sollte der Server nicht abbrechen, wenn der Client dies tut. – Schlaus

+0

Okay, da ist es in deinem Schnitt. 'register_shutdown_function()'. +1 –