kraft hannes: daten sofort in browser ausgeben

hallo leute,

ich suche nun leider schon zu langen an einer möglichkeit die daten welche ich mit perl an den browser zurückgebe, sofort im browserfenster anzuzeigen

beispiel:
(ich setze mal voraus dass die forumsuche mit perl realisiert ist)

wenn ich hier also in der forumsuche ein stichwort eingebe
und dann auf suchen klicke, dauert es recht lange bis ergebnisse
erscheinen, weil - nehme ich mal an - perl zuerst die rückgabeseite
generiert und sie dann erst dem webserver übergibt der die seite
dann an den browser schickt

frage:

wie kann ich perl oder meinen apache dazu bringen, teile der ausgabe

  • meinetwegen die einleitung <html> . . .  etc. SOFORT auszugeben und den rest erst nach und nach, damit der user nicht so lange warten muss

vielen dank für eure mühe

servus
hannes

  1. wie kann ich perl oder meinen apache dazu bringen, teile der ausgabe

    • meinetwegen die einleitung <html> . . .  etc. SOFORT auszugeben und den rest erst nach und nach, damit der user nicht so lange warten muss

    ++$;

    Zur Funktionsweise siehe "perldoc perlvar".

    Peter

    1. ++$;

      Zur Funktionsweise siehe "perldoc perlvar".

      hallo peter,

      im ansatz stimmt das - leider funkts irgendwie nicht *g*

      . . . möglicherweise arbeitet dieses Output-Autoflush nur auf der
      konsole und zusammen mit dem apache gehts eben nicht

      hast du noch eine andere idee??

      in diesem zusammenhang fand ich - endlich - noch einen thread
      hier im forum:
      http://www.teamone.de/selfhtml/sfarchiv/1999_3/t06393.htm

      servus
      hannes

      1. hallo zusammen,

        zum teil funkts nun - ich weiss aber nicht genau wieso:

        nachdem ich jetzt alles sortiert und ausprobiert habe bin ich
        zu folgender (unbefriedigender) lösung gekommen:

        die ersten zeilen meines scripts sehen jetzt so aus:

        #!/usr/bin/perl

        use English;

        $ = 1;

        print "Content-type: text/html\n\n";

        $HTTP_headers =  "HTTP/1.1 200 OK\015\012";
             $HTTP_headers .=  "Connection: close\015\012";
        print "<!--";
             print $HTTP_headers;
        print "-->";

        . . . leider weiss ich bei den http headers nicht was die eigentlich
        hier sollen - habe ich bei
        http://www.apache.org/docs-1.2/misc/FAQ.html#nph-scripts
        abgeschrieben

        auch mit dem use english blicke ich überhaupt nicht durch

        eigentlich nur der $ ist mir eingängig (- ist auch in programmieren
        mit perl von larry wall beschrieben)

        ich vermute dass ich hier irgendwo den wald nicht sehe - vor lauter
        bäume - oder ich bin einfach nur zu unwissend

        vielleicht hat noch einer der geschätzen forumteilnehmer eine idee :)

        servus
        hannes

        ps: ich hoffe dass niemand meinte ich wolle die ausgabe der
        suchfunktion hier kritisieren - ich brauche das ganze natürlich
        selber (die suche ist übrigens superschnell geworden :))

        1. hi,

          zum teil funkts nun - ich weiss aber nicht genau wieso:

          so gehts mir auch immer *g*

          nachdem ich jetzt alles sortiert und ausprobiert habe bin ich
          zu folgender (unbefriedigender) lösung gekommen:

          die ersten zeilen meines scripts sehen jetzt so aus:

          #!/usr/bin/perl

          »»  use English;

          $ = 1;

          print "Content-type: text/html\n\n";

          $HTTP_headers =  "HTTP/1.1 200 OK\015\012";
               $HTTP_headers .=  "Connection: close\015\012";
          print "<!--";
               print $HTTP_headers;
          print "-->";

          . . . leider weiss ich bei den http headers nicht was die eigentlich
          hier sollen - habe ich bei
          http://www.apache.org/docs-1.2/misc/FAQ.html#nph-scripts
          abgeschrieben

          1.2? soweit ich weiß geht es bei dieser version nur mit nph scripts.
          das file muss dafür mit nph- beginnen. also aus test.cgi wird nph-test.cgi.
          dann parsed der server das file nicht mehr und buffered deswegen auch nichts.
          nur musst du dann den header schreiben, deswegen die zeilen die du da hast..
          ich empfehle dir die neuestes version (irgendwas mit 1.3 soweit ich weiß) zu installieren, ab da buffered der nämlich nichts mehr
          wenn du $ auf 1 setzt. ist erheblich einfacher zu handhaben als nph scripts :)

          auch mit dem use english blicke ich überhaupt nicht durch

          vergiss es, ist unwichtig für dich :)
          ich glaube das ist dazu da um gewisse kryptische variablen auch über englische namen ansprechen zu können.

          also benenn dein obiges script nach nph-irgendwas um, dann MÜSSTE es eigentlich gehen...
          wenn nicht zieh dir halt den neusten apache ;)

          danny

        2. Hallo Hannes,

          #!/usr/bin/perl

          »»  use English;

          $ = 1;

          [...]

          auch mit dem use english blicke ich überhaupt nicht durch

          eigentlich nur der $ ist mir eingängig (- ist auch in programmieren
          mit perl von larry wall beschrieben)

          mit use english bekommst Du Variablen mit sprechenden (englischen) Namen bekommst. Z.B. $PROCESS_ID statt $$. In Deinem Fall könntest Du anstelle von $ die Variable $OUTPUT_AUTOFLUSH verwenden. Auf diese Namen hättest Du eigentlich in der Doku perlvar (perldoc perlvar) stolpern müssen ...

          Jörk

      2. im ansatz stimmt das - leider funkts irgendwie nicht *g*

        . . . möglicherweise arbeitet dieses Output-Autoflush nur auf der
        konsole und zusammen mit dem apache gehts eben nicht

        Verwendest Du Tabellen?

        Peter

  2. wenn ich hier also in der forumsuche ein stichwort eingebe
    und dann auf suchen klicke, dauert es recht lange bis ergebnisse
    erscheinen, weil - nehme ich mal an - perl zuerst die rückgabeseite
    generiert und sie dann erst dem webserver übergibt der die seite
    dann an den browser schickt

    Das dauert solange, weil das Perlscript 70.000 Postings durchsucht. Das generieren der HTML Seite geht in Bruchteiler einer Sekunde. Wozu gibts denn ULTRA Sparc, Alpha und XEON? :-)

    MfG
    Thomas

  3. hi!

    ich suche nun leider schon zu langen an einer möglichkeit die daten welche ich mit perl an den browser
    zurückgebe, sofort im browserfenster anzuzeigen

    <68764.html>

    bye, Frank!