Der Apache ist so konstruiert, dass er für jeden Request einen separaten Thread aufmacht.
Das ist eigentlich im Hinblick auf die Frage „genug richtig“. Aber wenn man es genau nimmt startet der Apache als Vaterprozess mit Root-Rechten und setzt sofort eine konfigurierbare(¹) Mindestanzahl Kinder (ohne Root-Rechte) in die Welt, an welche er die eingehenden Request verteilt. Sind die Kinder alle beschäftigt, dann macht er - bis zu einem einstellbarer Maximum(¹) - weitere Kinder. Sitzen die aber lange faul rum, dann reduziert er deren Zahl wieder auf das Minimum oder bis alle ausreichend beschäftigt sind. Die Kindprozesse erledigen mehr als eine Anfrage. Aber auch nur eine konfigurierbare(¹) maximale Anzahl - um z.B. einer überbordendem Speicherreservierung vorzubeugen: Ist also (rein auf Grund der Statistik) damit zu rechnen, dass ein Kindprozess „krank von der Arbeit“ ist, wird er ersetzt.
Man kann das auch wie einen Fahrradkurier beschreiben: Der Vaterprozess ist die Zentrale, die Kindprozesse die Kuriere und PHP wären dann die Pizzabäcker bzw. Köche.
¹) wie das genau geht hängt davon ab, ob mit welchem MPM-Modul man ihn betreibt.
Na denn - 💪 wo ist das Klavier? 😉
Klaviere sind gar nicht sooooo schwer. Einfach Tragegurte benutzen und die Dinger niemals alleine tragen - das beugt übermäßiger Anstrengung und Rückenschäden vor.