httpd-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Harald Weidner <hweidner-li...@gmx.net>
Subject Re: CGI und C++: Übertragung während Laufzeit des CGI Programmes?
Date Mon, 08 Dec 2003 12:45:37 GMT
Hallo,

>Ich habe eine eher spezielle Frage zur CGI Programmierung mit C / C++.
>In Perl gibt es die Möglichkeit Daten über den Webserver an den 
>Browser zu schicken, bevor das Script fertig abgelaufen ist.

Bei aktuellen Apache-Versionen (sowohl 1.3 als auch 2.0) brauchst
Du dafür serverseitig nichts speziell konfigurieren, da sie das ohnehin
so machen.

>Nun zu meiner Frage: Gibt es eine Möglichkeit bei C / C++ CGI-
>Programmen was ähnliches zu erreichen? Der folgende Artikel erläutert
>einen Weg: http://www2.linuxjournal.com/lj-issues/issue82/4386.html 
>
>Dieser scheint aber auf einer alten proprietären Implementation von 
>Netscape zu beruhen und funktioniert daher nicht überall.

Das Umbenennen des Skriptes in nph-irgendwas war auch bei früheren
Apache/NCSA Versionen der Weg, um das gewünschte zu erreichen. Inzwischen
ist er nicht mehr nötig. Damit entfällt auch die Ausgabe des HTTP
Statuscodes.

Wichtig ist dagegen, bei der Programmierung des CGI-Programmes zu
erreichen, dass Ausgaben nicht gepuffert werden. Wie das im einzelnen
geht, hängt von der Programmiersprache ab. In Perl wird die Pufferung
durch Setzen der Spezialvariable $| abgeschaltet, in C muss nach jeder
Ausgabe mit fflush() der Puffer geleert werden.

>Falls mir jemand entsprechende Informationen geben könnte wäre ich 
>äusserst dankbar!

Das folgende CGI-Programm liefert 5 Ziffern im Sekundenabstand:


#include <stdio.h>

int main() {
  int i;

  printf("Content-Type: text/plain\n\n");
  for(i=0; i<5; ++i) {
    printf("%d\n", i);
    fflush(NULL);
    sleep(1);
  }

  return 0;
}


Man sollte ausserdem noch beachten, dass zwischen dem Server und dem
Browser agierende Proxies den Effekt im allgemeinen kaputt machen. Beim
Testen sollte man daher alle Proxies abschalten.

Gruß, Harald

-- 
Harald Weidner                           hweidner@gmx.net

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Mime
View raw message