2017-05-03 5 views
1

Ich bin derzeit eine Webseite auf einen neuen Server von PHP 5.0.x Migration auf php 5.6Anzeige php Browser-Inhalte nacheinander

Jetzt habe ich eine Seite, die eine Datenbankabfrage 7mal und die Ergebnisse Schleifen werden in eine geladene Tabelle. Ich weiß, dass dies nicht der beste Weg ist, aber es funktioniert ganz gut und ich habe derzeit keine anderen Möglichkeiten, daran zu arbeiten, weil die Ergebnisse aus verschiedenen Datenbanken stammen. Caching ist keine Option, da ich den Inhalt immer auf dem neuesten Stand halten muss.

Vom Zugriff auf die Website bis zur Anzeige dauert es etwa drei bis vier Sekunden. Die Abfragen wurden zwar kürzlich optimiert, dauern aber noch lange, bis sie ausgeführt werden.

Zu meinem Problem: Der alte Webserver zeigt die Ergebnistabelle nach Tabelle, so dass der Benutzer sieht, dass die Seite bereits an der Anfrage arbeitet. Wenn der Inhalt von Table1 geladen ist, wird er angezeigt und der Server kümmert sich um das zweite Resultset.

Der neue Webserver generiert die Website auf einmal und der Inhalt wird erst angezeigt, wenn die 7 Ergebnissätze geladen sind und die Daten den Rastern zugeordnet sind.

Gibt es eine Option, vielleicht in php.ini mit dem ich das gleiche Ergebnis wie auf dem alten Webserver erreichen kann? Ich weiß wirklich nicht, wie man es googelt, also frage ich euch.

Auf der anderen Seite gibt es vielleicht eine Option, um alle Abfragen auf einmal (Multithreading?) Und nicht in Folge?

Entschuldigung für mein "Verbesserungs" Englisch.

+0

Ist es möglich, Ihren Code anzuzeigen? –

+0

Nicht so, wie es geschrieben wurde, aber ich kann versuchen, es zu anonymisieren. Der Code selbst hat sich seit dem alten Webserver nicht geändert. – bockwurst

Antwort

0

Es ist wahrscheinlich etwas mit der Ausgangspufferung verwandt. Sie können erzwingen, Pufferinhalte mit der Funktion ob_flush zum Client zu schreiben, fügen Sie einfach einen Aufruf von ob_flush nach der Ausführung der Abfrage hinzu.

php.ini Einstellung ist output_buffering. Überprüfen Sie auch die Einstellung output_compression, da dies zu Problemen bei der Pufferspeicherung führen kann.

+1

Das 'output_buffering' wurde auf 4096 Byte gesetzt und' output_compression' ist auf dem neuen Webserver und auf dem alten deaktiviert, aber 'ob_flush()' hat den Job gemacht! Vielen Dank! – bockwurst