1: Daemon overzicht
De Phlo Daemon is een optionele Node sidecar (phlo-daemon.js) die elk Phlo-doel uitvoert op een pool van residentiële workers. Het is een generieke engine: het weet niets over WebSockets, taken of enige specifieke functie. Phlo Realtime en de scheduler zijn ingebouwd in de daemon; de runtime helpers bereiken het via lokale HTTP. Core Phlo werkt zonder het; de daemon is de laag die de zware paden snel maakt en de langdurige services aandrijft.

1.1: Drie manieren waarop Phlo code uitvoert
Elke routine in een Phlo-app is een aanroepbaar doel (Class::method, object.method of een blote function). Er zijn drie manieren waarop het daadwerkelijk wordt uitgevoerd:
| Modus | Wat er gebeurt | Wanneer |
|---|---|---|
| In-process | Een gewone functie- of methode-aanroep binnen het huidige verzoek. Geen nieuw proces. | De normale situatie: routes, views, modellen. |
| One-shot CLI | Een verse php app.php <target> proces dat de app opstart, draait en afsluit. |
Een doel dat wordt aangeroepen vanuit cron, een deploy-script of een async helper zonder daemon. Eén opstart per aanroep. |
| Pooled worker | Een resident worker (gestart door de daemon) die de app eenmaal heeft opgestart en aanroepen via een pijp beantwoordt. Geen opstart per aanroep. | Dezelfde doelen, wanneer de daemon draait. |
De eerste is gewoon PHP. De tweede en derde zijn hetzelfde doel dat buiten de band wordt uitgevoerd; het enige verschil is of er elke keer een nieuw proces wordt opgestart (one-shot) of dat een warme worker wordt hergebruikt (pool). De daemon is wat het one-shot pad omzet in het pooled pad.
1.2: Waarom het optioneel is
De one-shot route betekent dat er niets moeilijks afhankelijk is van de daemon. Async helpers vallen terug op een subprocess; taken vallen terug op cron; een app die alleen HTTP bedient heeft het helemaal niet nodig. Dus je kunt ontwikkelen en implementeren zonder de daemon, en deze inschakelen waar opstartkosten of realtime belangrijk zijn, zonder wijzigingen aan je app-code.
Voer de daemon uit wanneer een app:
- WebSockets nodig heeft (Phlo Realtime stuurt elk socket-evenement naar het),
- taken plant zonder een cron-entry, of
- een hot path heeft die zich verspreidt in veel app-aanroepen per verzoek (waarbij het opstarten van een proces per aanroep zou domineren).
1.3: Wat je aansluit
- Een klein configuratiebestand dat
phlo-daemon.jsvereist met de poort, de PHP-binaire, eventuele geplande taken en de websocket host→app mapping (de vierde parameter); apps registreren zichzelf niet. - Optioneel de
daemonconstante in een app entrypoint, om zijn runtime helpers naar de pool te routeren. - Voer het uit onder een procesmanager (pm2, systemd, supervisord).
De phlo-daemon repository is de bron, en het Daemon hoofdstuk van de gids is de uitgebreide technische referentie.