2017-04-23 4 views
0

Ich habe MySQL-Abfrage, die Antworten große Menge von Daten, als Folge der PHP-Seite, die diese Antwort zeigt ausstehende Status (DevTools) so lange wie 2- 3 Minuten Laufzeit, bevor die Seite voll geladen war und ich den Inhalt sehen konnte, während ich auf eine leere Seite warte ...Verhindern lange ausstehende Zeit als Ergebnis der großen MySQL-Abfrage Ergebnis in PHP

Gibt es eine elegante Möglichkeit, die Ergebnisgenerierung wie jede Zeile zu schneiden Echo auf der Seite vor dem PHP-Skript, das in die nächste Zeile geht (While-Schleife). Kann eine jQuery-asynchrone Anfrage oder eine andere clevere und elegante Lösung sein.

Endlich kann ich die Ergebnisse als Seitenladevorgänge sehen, es dauert vielleicht 2-3 Minuten, aber jede Sekunde (zum Beispiel) sehe ich eine weitere Zeile auf der Seite, statt 2-3 Minuten vor einer leeren Seite zu warten.

P.S. Ich denke, es sollte funktionieren wie einige Bilder lazy loading oder wie Facebook scrollen nach unten lädt die nächsten Ergebnisse (aber ohne die Schriftrolle)

+0

Versuchen wir stattdessen, die langsame SQL-Anweisung zu optimieren. Bitte geben Sie 'EXPLAIN SELECT ...' und 'SHOW CREATE TABLE' an. –

Antwort

2

können Sie Limit-Klausel in mysql Abfrage nach jeder fünf Sekunden können Sie Ihren Code ausführen und erhalten die nächsten 10 Zeilen auf Ihrer Seite mit Ajax.

+1

Die oben genannten Lösungen scheinen gut zu sein, da Sie aufgrund riesiger Daten die Seitennummerierung verwenden müssen und die erforderliche Spaltenindexierung erstellen müssen, damit Daten schneller abgerufen werden können. im obigen Vorschlag scheint es gut, aber statt für alle 5 Sekunden auszulösen. Sie können scrollbare Seitennummerierung verwenden Ref hier: https://www.thesoftwareguy.in/ajax-scroll-pagination-php-mysql/ Weil, wenn Benutzer nicht an viel mehr Daten interessiert ist, als keine Notwendigkeit des Abrufens und des Behaltens in der Seite . Verwenden Sie Loader-Images, damit der Benutzer erwartet wird, dass die Daten noch abgerufen werden. – Senthil

+0

@Senthil Ich schaue mir den Link an, den du zur Verfügung gestellt hast, aber eigentlich brauche ich alle Daten, die auf eine Seite geladen werden und mit dem Laden beginnen (nicht beim Scrollen), da der Benutzer schließlich alle Daten sehen kann einzelne Seite, aber er/sie wird beginnen, mit Daten zu arbeiten, die am Anfang anstelle von ausstehenden für 2-3 Minuten geladen sind. – IncreMan