Hallo zusammen,
ich hab ein kleines Problemchen ...
Ich habe eine kleine PHP-Seite geschrieben, in dessen Skript im chronologischen Ablauf folgendes passiert:
1. Ein wenig HTML-Code wird per echo ausgegeben u.A. ein Menü mit Links
2. Ein neuer Datensatz wird in die Datenbank eingefügt
3. Eine kleine Bestätigung wird per echo ausgegeben + Zeit
4. Ein groeßerer Algorithmus holt zunächst reichlich Daten aus der DB der Skript verarbeitet diese weiter (relativ umfangreich)
5. Zahlreiche Datensätze werden in der DB upgedated
6. Eine kleine Bestätigung wird per echo ausgegeben + Zeit
7. Die restlliche HTML-Seite wird per echo erzeugt
Mein Problem nun:
Da der DB-Server von Puretec etc. manchmal unsäglich langsam ist, enstehen manchmal zwischen Schritt 3 und 6 wartezeiten von bis zu 10 Sekunden, allerdings wird der Skript ordentlich durchgeführt.
(Die Zeit liegt definitiv nicht an meinem Skript )
Gut ... die Wartezeiten sind ja mein Problem bzw. Puretecs ...
Nun kommt das AABER ...
Während ich nun zwischen Schritt 3 und Schritt 6 auf die Restseite warte (die Kontrollausgabe von Schrott 3 wird schon angezeigt, sonst noch nichts) kann ich ja munter oben auf die Menüpunkte klicken ...
Beeile ich mich beim klicken ein wenig, so findet das Update der Datensätze (5) nicht mehr statt, welche aber immens wichtig sind und in Verbindung mit dem Insert aus 2 stehen.
Fragen:
a)
Ich hatte bislang gedacht, dass ein PHP-Skript erst vollständig durchgeführt wird und dann erst die HTML-Seite an den Browser gesendet wird. Die scheint in meinem Fall zumindest nicht so zu sein. Wird die Ausgabe wirklich während der ausführung schon erzeugt??
b)
Wenn die Ausgabe tatsächlich schon beim Client ankommt, während der Skript noch läuft, wird die durchführung des Skripts unterbrochen, wenn der Client die Seite vor fertigstellung des Skripts wechselt!?
c)
In allen gängigen Programmiersprachen habe ich die möglichkeit DBTransaktionen mit Rollbacks zu schreiben. Weiss jemand ob die Standard-MySQL-Installation von Puretec (MySQL 4.0) Transaktionen unterstützt.
d)
Falls bei c) JA und bei a) JA. So wäre mir selbst mit Transaktionen nicht geholfen, wenn das Skriptende ja nie erreich würde (wo ggf. der Rollback stände). Es sei denn es gäbe nach einem Transaktionsbeginn und KEINEM commit wegen Skriptabbruch ein Autorollback. Weiss da jemand mehr?
Dank euch im Vorraus ...
Sry, falls ich irgendetwas nicht wirklich verstanden haben sollte ^^ hab auch schon gegooglet und gesucht wie ein Affe ...
Vielleicht kann mir hier jemand helfen.
Gruß
Christian
ich hab ein kleines Problemchen ...
Ich habe eine kleine PHP-Seite geschrieben, in dessen Skript im chronologischen Ablauf folgendes passiert:
1. Ein wenig HTML-Code wird per echo ausgegeben u.A. ein Menü mit Links
2. Ein neuer Datensatz wird in die Datenbank eingefügt
3. Eine kleine Bestätigung wird per echo ausgegeben + Zeit
4. Ein groeßerer Algorithmus holt zunächst reichlich Daten aus der DB der Skript verarbeitet diese weiter (relativ umfangreich)
5. Zahlreiche Datensätze werden in der DB upgedated
6. Eine kleine Bestätigung wird per echo ausgegeben + Zeit
7. Die restlliche HTML-Seite wird per echo erzeugt
Mein Problem nun:
Da der DB-Server von Puretec etc. manchmal unsäglich langsam ist, enstehen manchmal zwischen Schritt 3 und 6 wartezeiten von bis zu 10 Sekunden, allerdings wird der Skript ordentlich durchgeführt.
(Die Zeit liegt definitiv nicht an meinem Skript )
Gut ... die Wartezeiten sind ja mein Problem bzw. Puretecs ...
Nun kommt das AABER ...
Während ich nun zwischen Schritt 3 und Schritt 6 auf die Restseite warte (die Kontrollausgabe von Schrott 3 wird schon angezeigt, sonst noch nichts) kann ich ja munter oben auf die Menüpunkte klicken ...
Beeile ich mich beim klicken ein wenig, so findet das Update der Datensätze (5) nicht mehr statt, welche aber immens wichtig sind und in Verbindung mit dem Insert aus 2 stehen.
Fragen:
a)
Ich hatte bislang gedacht, dass ein PHP-Skript erst vollständig durchgeführt wird und dann erst die HTML-Seite an den Browser gesendet wird. Die scheint in meinem Fall zumindest nicht so zu sein. Wird die Ausgabe wirklich während der ausführung schon erzeugt??
b)
Wenn die Ausgabe tatsächlich schon beim Client ankommt, während der Skript noch läuft, wird die durchführung des Skripts unterbrochen, wenn der Client die Seite vor fertigstellung des Skripts wechselt!?
c)
In allen gängigen Programmiersprachen habe ich die möglichkeit DBTransaktionen mit Rollbacks zu schreiben. Weiss jemand ob die Standard-MySQL-Installation von Puretec (MySQL 4.0) Transaktionen unterstützt.
d)
Falls bei c) JA und bei a) JA. So wäre mir selbst mit Transaktionen nicht geholfen, wenn das Skriptende ja nie erreich würde (wo ggf. der Rollback stände). Es sei denn es gäbe nach einem Transaktionsbeginn und KEINEM commit wegen Skriptabbruch ein Autorollback. Weiss da jemand mehr?
Dank euch im Vorraus ...
Sry, falls ich irgendetwas nicht wirklich verstanden haben sollte ^^ hab auch schon gegooglet und gesucht wie ein Affe ...
Vielleicht kann mir hier jemand helfen.
Gruß
Christian
Kommentar