phpbar.de logo

Mailinglisten-Archive

[php] stueckweises aufbauen einer seite

[php] stueckweises aufbauen einer seite

Hartmut Holzgraefe hartmut_(at)_six.de
Mon, 22 May 2000 12:25:49 +0200


Stefan Krister wrote:
> > http://osiris.ifi.unizh.ch/pushpull.html , Anschnitt "Server-Pull"
> 
> wie macht das z.B. apollo7.de? Beim Netscape sehe ich die abgefragten
> Suchmaschinen, anschließend kommen die Treffer.
> 
> Beim IE jedoch, kommen die Treffer _ohne_ vorherige Suchmaschinen.

vermutlich Fallunterscheidung je nach $HTTP_USER_AGENT


> > Microsoft ignoriert diesen einfachen und eleganten Mechanismus
> > allerdings hartnäckig
> 
> So wie's aussieht, müssen sich die IE-User wohl damit begnügen, nichts
> zu sehen ...
> 
> Hat jemand einen Code-Ausschnitt für mich, wo sowas gemacht wird? Ich
> meine jetzt die Ausgabe beginnend links oben im leeren Browserfenster.

die Dokumentation im pushpull.html (s.o.) enthält doch ein
Code-Beispiel,
oder ? (OK, 's ist ein Shell-Script, kein PHP, aber so riesig werden die
Unterschiede doch nicht sein ...)

wem das allerdings zu knapp ist, kann hier eine Langfassung in PHP
bewundern:


<?

$is_multipart = false;


// unterstützt unser Browser Server-Push mit multipart/replace ?
// naiv, aber für den Anfang reichts
function have_multipart()
{
  global $HTTP_USER_AGENT;

  if(strstr($HTTP_USER_AGENT,"ozilla"))
    {
      if(strstr($HTTP_USER_AGENT,"MSIE"))       return false;
      if(strstr($HTTP_USER_AGENT,"compatible")) return false;
      return true;
    }
  return false;
}


// multipart-header ausgeben
function multipart_next($type="text/html")
{
  global $is_multipart;

  if($is_multipart!=true)
    {
      $is_multipart=true;
      header("HTTP/1.0 200");
      header("Content-type: multipart/x-mixed-replace;
boundary=MultipartDelimiter");
    }

  print "--MultipartDelimiter\n";  

  print "Content-type: ".$type."\n\n";

  flush();
}

function multipart_start($type="text/html")
{
  multipart_next($type);
}



function multipart_end()
{
  global $is_multipart;

  if($is_multipart)
    {
      print "\n\n--MultipartDelimiter--\n";
    }
  flush();
}



multipart_start();
echo "Hallo start\n";
multipart_next();
sleep(5);

for($i=1;$i<10;$i++) {
  echo "Fortsetzung $i von 10\n";
	multipart_next();
  sleep(5);
}

echo "das wars\n";
multipart_end();

?>




--
Hartmut Holzgraefe         hartmut_(at)_six.de           http://www.six.de


php::bar PHP Wiki   -   Listenarchive