Ständige Ausgaben an Client ?

Alles, was PHP betrifft, kann hier besprochen werden.

Ständige Ausgaben an Client ?

Postby Knappe » 04. March 2005 17:57

Hallo,

ich habe eine umfangreiche, zeitintensive Datenbankoperatio in PHP-geschrieben.

Aufgrund der der hohen Datensatzanzahl möchte ich nun - beispielsweise alle 1.000 Datensaätze - eine Ausgabeinfo an den Client senden.

Leider funktioniert das bei mir nicht (erst wenn alles fertig ist, wird die HTML-Seite beim Client aufgebaut).

Code: Select all
Habe "output-buffering=Off" gesetzt.


Was für einen Fehler mache ich ?

Verwende am Anfang des Scripts folgenden Header-Angaben
Code: Select all
    header("Content-Type: text/html; charset=iso-8859-1");
   header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");               // Datum aus Vergangenheit
   header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");    // immer geändert   
   header("Cache-Control: no-store, no-cache, must-revalidate");   // HTTP/1.1
   header("Cache-Control: post-check=0, pre-check=0", false);
   header("Pragma: no-cache");                                       // HTTP/1.0
Knappe
 
Posts: 114
Joined: 18. November 2004 17:40

Postby Wiedmann » 04. March 2005 18:16

Das hängt von vielen Faktoren ab. u.a.:
- grundsätzlich müsstest du halt alle 1000 Datensätze ein flush() machen. output_bufferung muss dazu, wie dir bekannt, aus sein.
- deine Daten sollten nicht in einer Tabelle ausgegeben werden. Oder anders gesagt: du solltest dich mit "incremental rendering" in HTML auseinandersetzen.

BTW:
irgendwas ist ziemlich kaputt im Design, wenn ein (Web-)Client soviel Daten auf einmal anfordert...
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Knappe » 04. March 2005 18:17

Hat sich wohl schon erledigt ?

Mit der Klausel
Code: Select all
ob_end_flush();


dann die
Code: Select all
echo-Anweisungungen


und abschliessend der Befehl
Code: Select all
flush();


funktioniert.

Scheinbar gibt es an dieser Stelle einen Unterschied zwischen Windows und Unix (siehe hier : http://de2.php.net/manual/de/function.flush.php).
Knappe
 
Posts: 114
Joined: 18. November 2004 17:40

Postby Knappe » 04. March 2005 18:20

Hallo Wiedemann,

Code: Select all
BTW:
irgendwas ist ziemlich kaputt im Design, wenn ein (Web-)Client soviel Daten auf einmal anfordert...


Nix "kaputt" ... ich muss Daten aus einer Firebird-Datenbank in eine MySQL-Datenbank übertragen.

Fällt da zur Kontrolle vielleicht eine bessere Lösung als die zwischenzeitliche Ausgabe ein ?
Knappe
 
Posts: 114
Joined: 18. November 2004 17:40


Return to PHP

Who is online

Users browsing this forum: No registered users and 22 guests