Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielanalyse von Big-Data-Verarbeitungsideen in PHP

Beispielanalyse von Big-Data-Verarbeitungsideen in PHP

小云云
小云云Original
2018-03-10 09:15:105195Durchsuche


Es ist ein Problem mit einer früheren Version im Zusammenhang mit einem großen Datenverarbeitungsbericht aufgetreten. Ich hatte dieses Problem zuvor mit dem Sync-Handler-Code gelöst, dieser lief jedoch sehr langsam, sodass ich die maximale Skriptlaufzeit um 10 bis 15 Minuten verlängern musste. Gibt es eine bessere Möglichkeit, große Datenmengen in PHP-Sites zu verarbeiten? Idealerweise würde ich es gerne im Hintergrund ausführen und es so schnell wie möglich machen. Dieser Prozess umfasste die Verarbeitung Tausender Finanzdaten, und ich habe Laravel verwendet, um die Website neu zu erstellen.

Beste beliebte Antwort (von spin81):

Die Leute sagen dir, du sollst Warteschlangen und so weiter verwenden. Es ist eine gute Idee, aber das Problem scheint nicht bei PHP zu liegen. Laravel/OOP ist großartig, aber das Programm, das die Berichte generiert, von denen Sie sprechen, scheint kein Problem zu sein. Aus einer anderen Perspektive würde ich gerne die SQL-Abfrage sehen, die Sie zum Abrufen dieser Daten verwendet haben. Wie andere bereits gesagt haben: Wenn Ihr Formular Tausende von Zeilen umfasst, sollte die Fertigstellung Ihres Berichts nicht 10 bis 15 Minuten dauern. Tatsächlich können Sie, wenn Sie alles richtig machen, wahrscheinlich Tausende von Datensätzen verarbeiten und denselben Bericht in einer Minute fertigstellen.

1. Wenn Sie Tausende von Abfragen durchführen, prüfen Sie zunächst, ob Sie nur ein paar Abfragen durchführen können. Ich habe zuvor eine PHP-Funktion verwendet, um 70.000 Abfragen auf ein Dutzend Abfragen zu reduzieren und so die Laufzeit von Minuten auf den Bruchteil einer Sekunde zu reduzieren.

2. Führen Sie EXPLAIN für Ihre Abfrage aus, um zu sehen, ob Ihnen Indizes fehlen. Ich habe einmal eine Abfrage durchgeführt und die Effizienz hat sich durch das Hinzufügen eines Index um vier Größenordnungen verbessert. Wenn Sie MySQL verwenden, können Sie diese „schwarze Magie“-Fähigkeit erlernen, die Sie und Ihre Freunde verblüffen wird.

3. Wenn Sie eine SQL-Abfrage durchführen und die Ergebnisse und viele Zahlen zusammenfassen, prüfen Sie, ob Sie so etwas wie SUM() und verwenden können Funktionen wie AVG() rufen die GROUP BY-Anweisung auf. Als Faustregel gilt: Überlassen Sie die Datenbank so weit wie möglich der Berechnung. Einen sehr wichtigen Tipp, den ich Ihnen geben kann, ist dieser: (Zumindest in MySQL) Boolesche Ausdrücke nehmen einen Wert von 0 oder 1 an, und wenn Sie wirklich kreativ sind, können Sie das mit SUM() und seinen Freunden tun. Einige sehr überraschende Dinge.

4 Okay, hier noch ein letzter Tipp von PHP-Seite: Sehen Sie nach, ob Sie diese ebenso zeitaufwändigen Zahlen schon oft berechnet haben. Nehmen wir zum Beispiel an, die Berechnung der Kosten für 1.000 Säcke Kartoffeln ist teuer, aber Sie müssen diese Kosten nicht 500-mal berechnen, bevor Sie die Kosten für 1.000 Säcke Kartoffeln in einem Array oder etwas Ähnlichem lagern, also tun Sie es nicht Sie müssen nicht immer wieder die gleichen Berechnungen durchführen. Diese Technik wird als Mnemonik bezeichnet und wirkt oft Wunder, wenn sie in Berichten wie Ihrem verwendet wird.
Verwandte Empfehlungen:

Lösungen für große Datenmengen, großen Datenverkehr und hohe Parallelität auf PHP-Websites

Sechs grundlegende Javascript-Tutorials Ausführliche Erläuterung der Datentypverwendung

Empfohlene Artikel zum Testen großer Datenmengen

Das obige ist der detaillierte Inhalt vonBeispielanalyse von Big-Data-Verarbeitungsideen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn