Wie zeitkritisch ist PHP?

2nd

2nd

Aktives Mitglied
Thread Starter
Dabei seit
25.07.2004
Beiträge
9.018
Reaktionspunkte
243
Ich habe mal eine Frage zum Zeitverhalten bzgl. der Variablen in PHP:

for ($i=0; $i<=10; $i++) {
machdies;
}


for ($i=0; $i<=5; $i++) {
machdas;
}

Geht das gut oder geht das schief?

2nd
 
Zeitverhalten ?
Also das ist kein Problem, so wie ich das sehe.

ciao
 
Das heisst, die erste Schleife ist durch und die Variable $i wieder frei?

Bis wohn kann man das treiben? Also was kann ich in der Schleife machen? Oder wird grundsätzlich alles von oben nach unten abgearbeitet?

Ich frage, weil man z. B. bei Actionscript unheimlich aufpassen muss, dass man keine undefinierbaren Zustände bekommt - das kommt öfters vor.

2nd
 
2ndreality schrieb:
Das heisst, die erste Schleife ist durch und die Variable $i wieder frei? Bis wohn kann man das treiben? Also was kann ich in der Schleife machen? Oder wird grundsätzlich alles von oben nach unten abgearbeitet? Ich frage, weil man z. B. bei Actionscript unheimlich aufpassen muss, dass man keine undefinierbaren Zustände bekommt - das kommt öfters vor. 2nd
Wenn du $i nicht zuvor deklariert oder verwendet hast, ist es nur innerhalb der ersten und innerhalb der zweiten Schleife (aber unabhängig voneinander) gültig. Davon einmal abgesehen, würde es bei Deinem Beispiel aber ohnehin nie zu Problemen kommen, weil Du $i ja in der zweiten Schleife wieder auf 0 setzt.
 
Jau bei ActionScript ist ja der Ablauf auch nicht ganz so linear, weil der Code innerhalb von Objekten oder Funktionen unabhängig ausgeführt wird. Hier führst du alles schön von oben nach unten aus.
 
Ulfrinn schrieb:
weil Du $i ja in der zweiten Schleife wieder auf 0 setzt.

Das setzt aber vorraus, dass die erste Schleife durch ist, sonst gibt es Chaos, zumindest bei deklarierten Variablen.

Ok danke, also sind die Vars in den Blöcken "lokal" und damit gekapselt, so wie bei AS in den Timelines und globale Variablen.

2nd
 
Das wird einfach nur linear abgearbeitet.
Du könntest, wenn du in der 2. Schleife $x nimmst $i benutzen und sie hätte den Wert 10!

(so denke ich mir das :)
 
2ndreality schrieb:
Das setzt aber vorraus, dass die erste Schleife durch ist, sonst gibt es Chaos, zumindest bei deklarierten Variablen.
Natürlich, aber das ist ja in Deinem Beispiel gar nicht der Fall. Problematisch wäre es bei einer solchen Konstellation:
for ($i = 0; $i < 5; $i++) { echo "$i\n"; for ($i = 0; $i < 10; $i++) { echo "\t$i\n"; } }
 
Zuletzt bearbeitet:
D. h. also, wenn der Parser in der ersten Schleife auf einen Zustand trifft, der für dei gesamte Ausführung genau 1 Minute braucht, dann fängt vorher die 2. Schleife nicht an? Also erst in Sekunde 61?

2nd
 
Genau!

In der Schleife könntest du höchstens ne Funktion aufrufen oder was includen, sonst geht das ganz schön nacheinander...
 
2ndreality schrieb:
D. h. also, wenn der Parser in der ersten Schleife auf einen Zustand trifft, der für dei gesamte Ausführung genau 1 Minute braucht, dann fängt vorher die 2. Schleife nicht an? Also erst in Sekunde 61? 2nd
Ich verstehe Dein Problem nicht … Ein PHP-Skript wird nur einmal ausgeführt, und zwar linear. Von oben nach unten. Es gibt nicht (wie bei ereignisorientierten Programmstrukturen) die möglichkeit, daß zwei Codeabschnitte parallel ausgeführt werden. Die beiden Schleifen Deines Beispiels werden hintereinander ausgeführt. Niemals parallel, Du würdest doch auch nicht erwarten, daß bei einem Schnippsel wie
echo "a"; echo "b";
erst "b" und dann "a" ausgegeben wird oder gar beides parallel!
 
Ulfrinn schrieb:
Ich verstehe Dein Problem nicht … Ein PHP-Skript wird nur einmal ausgeführt, und zwar linear. Von oben nach unten. Es gibt nicht (wie bei ereignisorientierten Programmstrukturen) die möglichkeit, daß zwei Codeabschnitte parallel ausgeführt werden. Die beiden Schleifen Deines Beispiels werden hintereinander ausgeführt. Niemals parallel, Du würdest doch auch nicht erwarten, daß bei einem Schnippsel wie erst "b" und dann "a" ausgegeben wird oder gar beides parallel!

Jetzt warst Du schneller Ulfrinn als mein letzter Post hievor :)

Ein PHP-Skript wird nur einmal ausgeführt, und zwar linear. Von oben nach unten. Es gibt nicht (wie bei ereignisorientierten Programmstrukturen)...


Genau das ist es, was ich hören wollte, vor allem Dein Echo-Beispiel ist sehr verständlich. Actionscript ist da anders - au den Unterschied wollte ich hinaus. Sorry für meine lange Leitung und Danke :)

2nd
 
2ndreality schrieb:
Jetzt warst Du schneller Ulfrinn als mein letzter Post hievor :)




Genau das ist es, was ich hören wollte, vor allem Dein Echo-Beispiel ist sehr verständlich. Actionscript ist da anders - au den Unterschied wollte ich hinaus. Sorry für meine lange Leitung und Danke :)

2nd


Das was Du hier hinterfragst ist ein elementares Problem der theoret. Informatik, die Determiniertheit. Will sagen, wenn ich zu Programmstart die gleichen Parameter "einwerfe", sollte auch immer das gleiche heruaskommen. Das bedingt nat. die sequentielle Abarbeitung der Anweisungen! Ich bin eher fasziniert, daß es Sprachen gibt wo das nicht so sein soll. Beim Multithreading weiß man nie, wie weit welcher thread ist ( muß man syncronisieren), aber bei der klassischen Programmierung sollte man sich auf sowas verlassen können - sonst wird es sehr sehr schwer :)
 
Jo wegus, in Actionscript ist man relativ schnell damit konfrontiert. Durch die einzelnen Instanzen eines Objekts mit jeweils eigenem Skript und das ereignisorientierte Modell schafft man sich viele Möglichkeiten, andererseits muss man Skript-Zustände erahnen und behandeln, die das Ganze teilweise extrem mühselig machen.

Bsp. Dateizugriff: Ich habe auf dem Server ein JPG-Bild, dieses will ich laden und durch den Flashplayer anzeigen lassen.

erzeuge Movieclip;
Movieclip.ladeBild(URL);
Movieclip.zeigeBild;

Funktioniert so nicht, es muss heissen:

erzeuge Movieclip;
Movieclip.ladeBild(URL);

prüfeObgeladen <-> solange prüfen bis 100% erreicht sind;

Movieclip.zeigeBild;

Zum Teil weiss man echt nicht, wie weit der Flash Player beim Initialisieren/Abarbeiten der Funktionen ist und man muss für alles Mögliche synchronisieren.

2nd
 
2nd schrieb:
ereignisorientierte Modell

Ja, da glaub ich das gern. Man sollte aber bei Programmierung immer schön paranoid sein und nie davon ausgehen, daß eine Datei auch wirklich geladen ist. Java ist da recht gnadenlos mit seinen Null-Pointer Exceptions!
 
Absturz mit Meldung?

Dann hat man wenigstens noch einen Hinweis. Flash macht einfach weiter und man sucht sich einen Wolf...

2nd
 
dann arbeite mit der MovieClipLoader Klasse.

var mcl = new MovieClipLoader();
var lst = new Object();

lst.onLoadInit = function(ref){
trace('datei fertig geladen');
}

lst.onLoadError = function(){
trace('da ist ein fehler aufgetreten');
}

mcl.addListener(lst);
mcl.loadClip(url, zielmc);

cu
 
Danke Mackie, aber genau die habe ich versucht abstrakt und einfach oben darzustellen :)

Oder wie würdest Du einen Listener mit einer Zeile erklären?

2nd
 
Sorry, hatte das nur überflogen, ich dachte du hättest da was von loadMovie geschrieben...
 
Zurück
Oben Unten