Sven Rautenberg: Parallelverarbeitung

Beitrag lesen

Moin!

hat jemand Erfahrung mit Parallelverarbeitung mehrere PHP- Prozesse? Geht das überhaupt?

Für eine HTML- Tabelle mit 600 Zeilen dauert die Datenaufbereitung ca. 6 sec, die Sende- und Aufbereitungszeit des Browsers nochmal 6 sec. Und das nach mehreren Optimierungsschritten. Mit konvebntioonellen MItteln ist da wohl nichts mehr zu holen.

Wenn die 600 Treffer aus der Datenbank bekannt sind, setze ich pro Treffer nochmal zwei DB- Abfragen ab. (War vorher eine mit vielen JOINs). Das könnte eigentlich ein anderer PHP- Prozess machen.

Um mit den Abfragen was genau zu tun?

Multithreading bzw. parallele Verarbeitung ist dann unsinnig, wenn dadurch Ressourcen "doppelt" genutzt werden, die ohne parallele Verarbeitung die einzelne Aufgabe doppelt so schnell erledigen könnten, sprich: Wenn keine ungenutzten Ressourcen verfügbar sind, bringt Parallelverarbeitung keinen Geschwindigkeitsgewinn.

Ebenso bringt es nichts, wenn aufgrund der zu erledigenden Aufgabe nacheinander auf die Ergebnisse des vorherigen Arbeitsschritts gewartet werden muss.

Und zu guter Letzt: Wenn sowieso nur eine einzige Instanz der Datenbank vorhanden ist, die ihrerseits sicherlich schon hochoptimiert ist hinsichtlich paralleler Verarbeitung und Auslieferung von Ergebnissen, dann bringt es nichts, die Datenbank parallel an hundert Abfragen gleichzeitig arbeiten zu lassen, weil das genauso schnell abgearbeitet wird, wie hundert Abfragen nacheinander.

Im Gegenteil könnte durch Prepared Statements das serielle Abfragen gleichartiger Requests sogar deutlich schneller ablaufen.

Habe im Moment aber keine Idee, wie die Synchronisierung aussiehen könnte. Wenn der Hauptprozess warten muss, habe ich wohl kaum etwas gewonnen.

So ist es.

Und eigentlich sieht viel danach aus, dass der Hauptprozess warten muss. Denn wenn du am Ende eine komplette HTML-Seite ausgeben willst, die alle Ergebnisse der einzelnen Subprozesse enthält, bringt es dir gar nichts, wenn der einzige Server mit der einzigen Datenbank jetzt plötzlich wie wild parallel mit PHP arbeitet. Vermutlich bringt es dir sogar Nachteile, weil natürlich jeder einzelne PHP-Prozess seinen Anteil an RAM-Speicher benötigt, insgesamt also deutlich mehr RAM erforderlich sein könnte, als bei serieller Abarbeitung.

- Sven Rautenberg

--
"Love your nation - respect the others."