Edgar Ehritt: CGI Threading

Beitrag lesen

Hallo Jan,

prinzipiell sehe ich, wie Rolf auch, dass use Thread vermutlich nicht das ist, was Du suchst.
perlthrtut i. V. m. threads

Grundsätzlich gehst Du IMHO fehl in der Annahme, threads können Dir in nur irgendeiner Weise helfen. Wie zu sehen ist wird Perl via CGI angesprochen. Somit kann es Dir bereits auf Seiten des Webservers passieren, ob mit threads oder ohne ist dabei irrelevant, dass die Ausgabe 'RENDER VORGANG GESTARTET' erstmal im Ausgabepuffer hängt, statt gleich an den HTTP-Client durchgereicht zu werden. Weiterhin hast Du noch das Problem, dass es XMLHttpRequest.responseText nur -am Stück- gibt. Das wiederum aber heißt nicht mehr als dass Deine Überlegungen, Perl-Routinen zu zerlegen, um Vorabmeldungen zu generieren, in der Funktionsweise von Browsern ihr Ende finden.

Verschiebe also das ganze auf die Browserseite:

if (typeof XMLHttpRequest != 'undefined') {  
    xmlHttp = new XMLHttpRequest();  
}  
if (!xmlHttp) {  
    // Internet Explorer 6 und älter  
    try {  
        xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");  
    } catch(e) {  
        try {  
            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");  
        } catch(e) {  
            xmlHttp  = null;  
        }  
    }  
}  
if (xmlHttp) {  
    xmlHttp.open('GET', 'beispiel.xml', true);  
    xmlHttp.onreadystatechange = function () {  
        if (xmlHttp.readyState == 2) {  
            alert('RENDER VORGANG GESTARTET');  
        }  
        if (xmlHttp.readyState == 4) {  
           do_content(xmlHttp.responseText);  
        }  
    };  
    xmlHttp.send(null);  
}

Jedoch wird Dir das auch dann nicht viel nutzen, wenn der Webserver die Response-Header erst mit der Ressource durch die Leitung jagt, also wenn Das Perl-Script gänzlich abgearbeitet wurde. Da verhalten sich verschiedene Server unterschiedlich.

Gruß aus Berlin!
eddi

--
Ach übrigens: X für'n U verkürzt Strecken nur scheinbar!