| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

27-01-2010, 16:38
|
|
Tarlar
Registrierter Benutzer
|
|
Registriert seit: Jul 2004
Beiträge: 262
|
|
Destruktor bei Skriptabbruch
Hallo,
ich hätte eine kurze Frage zum Destruktor einer Klasse: Ich verschiebe einige Datenbankeinträge ans Ende des Skriptes, indem ich einige Datenbankeinträge nicht in die normalen Methoden, sondern in den Destruktor der jeweiligen Klasse setze.
Doch was passiert nun, wenn ein User das Skript während der Berechnung abbricht? Stoppt dann das Skript genau an der Stelle mit der Berechnung? Oder wird nur die Ausgabe beim Client gestoppt und des Skript wird auf dem Server normal weiterbearbeitet?
Gruß Tarlar
|

27-01-2010, 16:39
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
das hängt von der Einstellung ignore_user_abort in der php.ini ab.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-01-2010, 16:41
|
|
Tarlar
Registrierter Benutzer
|
|
Registriert seit: Jul 2004
Beiträge: 262
|
|
Soll heißen, dass bei TRUE das Skript weiter ausgeführt wird und gewährleistet ist, dass der Destruktor auch tatsächlich zum Einsatz kommt?
|

27-01-2010, 16:45
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von Tarlar
ich hätte eine kurze Frage zum Destruktor einer Klasse: Ich verschiebe einige Datenbankeinträge ans Ende des Skriptes, indem ich einige Datenbankeinträge nicht in die normalen Methoden, sondern in den Destruktor der jeweiligen Klasse setze.
|
Davon würde ich dringend abraten. Du hast keine Garantie dafür wann und ob der Destruktor ausgeführt wird. Außerdem weißt du gar nicht, ob zu dem Zeitpunkt die Datenbankverbindung noch besteht.
|

27-01-2010, 16:48
|
|
Tarlar
Registrierter Benutzer
|
|
Registriert seit: Jul 2004
Beiträge: 262
|
|
Es handelt sich nur um einen Log. Wichtige unabdingbare Einträge führe ich schon im Skript und nicht im Destruktor aus.
Ich wollte einfach nur wissen, wie der Hase läuft
|

27-01-2010, 16:52
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
In dem Fall läuft der Hase zig zag und nicht vorhersehbar.
|

27-01-2010, 16:55
|
|
Tarlar
Registrierter Benutzer
|
|
Registriert seit: Jul 2004
Beiträge: 262
|
|
Alles Klar. Dann noch eine Frage. Kann ich aus dem Destruktor noch eine Methode aufrufen oder ist das nicht möglich?
Dann könnte ich die Datenbankeinträge in eine eigene Methode packen und das während der Laufzeit aufrufen und als Absicherung im Destruktor nochmals.
|

27-01-2010, 16:59
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
Kann ich aus dem Destruktor noch eine Methode aufrufen oder ist das nicht möglich?
|
Ja, das ist möglich, wenn das ZielObjekt noch besteht.
Aber auf das Bestehen gibts keine Garantie. Das kann bei jedem Durchlauf anderes sein!
Zitat:
|
PHP 5 führt ein Destruktorkonzept ähnlich dem anderer objektorientierter Programmiersprachen wie C++ ein. Die Destruktormethode wird aufgerufen, sobald alle Referenzen auf ein bestimmtes Objekt entfernt werden oder wenn das Objekt explizit zerstört wird, oder in beliebiger Reihenfolge am Ende des Skripts.
|
Aus dem Handbuch.
|

27-01-2010, 17:05
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ich würde dringendst darauf verzichten, den Destruktor für deine Zwecke zu missbrauchen. Du solltest besser die entsprechenden Aktionen durch einen expliziten Methodenaufruf anstoßen, nachdem alles andere erledigt ist.
Eventuell ist auch register_shutdown_function für dich interessant, aber auch das wäre vermutlich nicht sauber umsetzbar für dein Vorhaben.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|