You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Flavio Tischhauser <fl...@turbomail.ch> on 2003/12/08 11:39:43 UTC

CGI und C++: �bertragung w�hrend Laufzeit des CGI Programmes?

Hallo zusammen

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.

Dies ist bei zeitaufw�ndigen Scripts besonders praktisch, da man den
User nicht vor einem weissen Bild warten lassen muss.

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.

Falls mir jemand entsprechende Informationen geben k�nnte w�re ich 
�usserst dankbar!


Gruss,

Flavio


--------------------------------------------------------------------------
                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
--------------------------------------------------------------------------


Re: CGI und C++: �bertragung w�hrend Laufzeit des CGI Programmes?

Posted by Harald Weidner <hw...@gmx.net>.
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
--------------------------------------------------------------------------