Peter Pan: ausgabe grosser tabellen mittels php/html/mysql

Beitrag lesen

Hi Vinzenz!

Ich mussein MySQL Tabelle mit cca 15.000 Datensätzen im Browser ausgeben (nein das war nicht meine Idee). Das ist ja an sich nicht das Problem, nur zwingt das den Browser dramatisch in die Knie.

vermutlich ist das ganz einfach. SELFHTML: <http://de.selfhtml.org/html/tabellen/aufbau.htm#vordefinieren@title=Spalten vordefinieren>.

Ja das ist bestimmt ein guter Hinweis, aber:
15.000 Zeilen à 30 Spalten dynamisch zu erzeugen benötigt schon etwas Zeit.

Ich habe mal getestet auf meinem lokalen System eine solche Tabelle per PHP generieren zu lassen - nur mit Dummy- Werten - ohne DB-Request.
Also 15.000 tr-Elemente, die jeweils 30 td-Elemente beinhalten und ja: colgroup habe ich auch verwendet.
Das PHP-Script lief 72 sekunden!

sicher dauert es, aber wenn die Daten ganz normal an den Browser geschickt werden,

und ganz sicher dauert es unter Realbedingungen (Datenbank-Requests, HTTP-Kommunikation via Internet) signifikant länger, als mein Versuch hier mit dem lokalen Webserver.

kann dieser die Tabelle aufbauen und alles das, was an Zeilen bereits da ist, anzeigen. Dass man erst spät zu Zeile 15.000 springen kann, ist klar. Nur wird der Browser nicht lahmgelegt, weil er ständig rechnen muss, wie er die Tabelle zu rendern hätte.

Das stimmt natürlich: man _sieht_ recht schnell *ein Ergebnis*!

Wie Du bereits schriebst: Ajax zu verwenden, nur um die Daten zu übertragen, macht das ganze noch viel schlimmer.

Das denke ich schon, ja;)

Wenn eine Person wider besseres Wissen und trotz Gegenargumenten unbedingt 15.000 Datensätze à 30 Spalten haben will, dann muss sie mit den entsprechenden Konsequenzen leben.

Bei einer Ausgabe für Print - oder als Ausgabe in ein PDF-Dokument - mag das noch angehen, aber bevor der Server den kompletten Payload an den User Agent geschickt hat, ist dieser (zumal als Browser)  wenig zu gebrauchen - da wir aber die genauen Vorgaben nicht kennen, belasse ich meine Ausführungen im Moment hierbei;)

off:PP

--
"You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)