dedlfix: ab 5.2 fortschrittsanzeige möglich?

Beitrag lesen

echo $begrüßung;

Das Problem besteht aber immer noch, dass du die Fortschrittsinformation irgendwie an den Browser senden mußt.

Und in dem gleichen Fenster, in dem das Formular abgeschickt wurde, geht das eben nicht. Du brauchst in jedem Fall ein zweites Fenster/Frame/Iframe, und zwingend auch ein zweites Skript, welches die Information an dieses Fenster liefert. Und damit das zweite vom ersten Skript was mitkriegt, auch noch einen Verbindungsmechanismus, z.B. Sessions.

Ich denke, hier irrst du. Ein Client hat einen Haufen HTML im Speicher rumliefen, den er gerade hübsch gerendert anzeigt. Darin befindet sich ein Formular mit einem File-Upload. Beim Abschicken werden die Formulardaten inklusive Datei mit einem POST-Request auf Ressource x.php zum Server gesendet. Nun kommt es drauf an, wann PHP in Erscheinung tritt. Werden zuerst alle Daten empfangen und dann erst dem PHP übergeben ist die Fortschrittsanzeige mit PHP nicht zu realisieren. Bekommt PHP bereits von Anfang an Wind vom Request, weiß es, welches Script aufzurufen ist, und kann schon auf irgendeine Weise tätig werden. Loslaufen lassen kann es das Script noch nicht, da ja noch nicht alle Daten ($_POST und $FILES) zur Verfügung stehen. In diesem Zustand müssten sich auch schon Antwortdaten auf den Request zum Client übertragen lassen. Der Browser müsste ungeachtet des noch laufenden Uploads schon auf einen neuen HTML-Haufen warten. (Irgendwie müssen ja die bisherigen Imlementierungen eines Fortschrittsbalkens auf diesem Prinzip basieren.)

Deinen komplizierten Gedankengang mit dem zweiten Fenster und zwei Scripts kann ich irgendwie nicht nachvollziehen.

Meine Recherchen bezüglich des Themas in den Tiefen des PHP-Quellcodes förderten zu Tage:
In der Datei /main/rfc1876.c wurde vor reichlich 3 Wochen an verschiedenen Stellen Code eingefügt, der zum Thema passt (auch der CVS-Kommentar ("Added RFC1867 fileupload processing hook.") passt dazu. Wenn ein Callback namens "php_rfc1867_callback" existiert, wird dieser mehrfach mit diversen Daten des Uploads benachrichtigt. Es gelang mir nicht, das andere Ende dieses Callbacks zu finden. Außerhalb der Datei kommt die Zeichenfolge "php_rfc1867_callback" nicht vor. Innerhalb ist auch keine PHP-Funktionsdeklaration zu finden, die normalerweise mit (dem Makro?) PHP_FUNCTION eingeleitet wird. Der einzige interessante Anknüpfungspunkt scheint Zeile 38 zu sein, deren Sinn ich aber nicht richtig verstehe, außer dass es sich wohl um eine Funktionssignatur handeln muss.

Ich befürchte, dass man seine Fortschrittsbalkenvorfreude noch länger als bis zum Erscheinen von PHP 5.2 dämpfen muss.

echo "$verabschiedung $name";