Der Martin: HTTP-Kommunikation zwischen PHP-Script und Ladebalken

Beitrag lesen

Hallo Rainer,

warum packt jemand JPEG-Grafiken in ein zip-Archiv?
Da ich sonst keine Möglichkeit sehe (userfreundlich) über ein Formular einen Haufen Bilder gleichzeitig hochzuladen. Es geht also mehr darum die Bilder zusammenzufassen als sie zu komprimieren.

okay, ich dachte mir schon sowas in der Art.

Geht es nur mir so, oder ist die MooTools Doku nichts für Leute, die von AJAX keine Ahnung haben?

Keine Ahnung - ich habe noch nie eine allgemein bekannte JS-Bibliothek angewendet und meide das auch weitgehend. Einmal weil ich JS an sich vermeide, wenn's auch ohne geht; zum anderen weil ich das bisschen an Funktionalität, was ich für ein Projekt brauche, lieber selbst schreibe (denn dann weiß ich, was der Code tut, was er kann und was er nicht kann) als mich durch umfangreiche Dokumentationen zu wühlen. Und dann womöglich festzustellen, dass ich 99% der Bibliothek unnütz rumschleppe.

Nur hast du vielleicht noch nicht erkannt, dass du es hier mit *zwei* PHP-Scripts zu tun hast.
Das habe ich in der Tat noch nicht.
Ich dachte das JavaScript würde dem PHP auf die Finger gucken.

Hast du eine Vorstellung, wie das gehen soll? Javascript und PHP können sich in der Regel nur über HTTP untereinander austauschen: Ein Request transportiert Informationen vom Client (JS im Browser) zum Server (PHP), ein Response liefert Informationen zurück. Das Dumme ist nun in deinem Fall, dass jeder Request das angesprochene PHP-Script neu startet, und dass die laufenden Instanzen nichts voneinander "wissen", so wie mehrere HTTP-Requests auch technisch keine Beziehung zueinander haben.

Wie kann ich denn zwei PHP-Scripte gleichzeitig ausführen?

Indem du eins aufrufst, und während dein Javascript noch auf die Antwort von PHP wartet, startest du mit einem weiteren Request ein anderes Script. Was hieß noch gleich das erste 'A' in AJAX? ;-)

Ein "normales" PHP-Script wird doch abgebrochen, wenn kein dazu gehöriges Browserfenster geöffnet ist, oder?

Das ist stark vereinfacht. Soweit ich weiß, beendet der Server das Script, wenn der Client von sich aus die Verbindung beendet. Ein Browserfenster ist dazu nicht nötig, auch jedes andere Programm kann ein PHP-Script auf dem Server starten, indem es einfach einen entsprechenden HTTP-Request absetzt.

Der "Image Worker" arbeitet sich durch ein vom Unzipper angelegtes temporäres Verzeichnis, welches er am Ende löscht.
Ich könnte ihn also ein Bild abarbeiten und löschen lassen, und dann das Script so lange erneut auf das temporäre Verzeichnis anwenden bis es leer ist.
Wie kann ich denn ein Script aus sich selbst heraus am effektivsten neu starten?

Da fehlt mir bisher auch jegliche Erfahrung. Auf jeden Fall müsste dein Hoster dir die Möglichkeit geben, von PHP aus weitere Prozesse zu starten. Ohne diese Berechtigung geht wahrscheinlich nichts.

Mir ist nur die header("Location: ") funktion bekannt, welche aber sämtliche Ausgaben verbieten würde.

Aber das wäre ja in deinem Beispiel kein Problem, oder? Dein Worker macht doch sowieso keine Ausgaben.

So long,
 Martin

--
In Ägypten haben früher 150000 Leute 35 Jahre lang an einer Pyramide gearbeitet. Aber bei uns arbeiten doppelt so viele Leute doppelt so lange allein an der Baugenehmigung.
  (Dieter Nuhr, deutscher Kabarettist)