4: Runtime helpers en planning

Twee consumenten rijden de daemon zonder dat je zelf /dispatch aanroept: de async runtime helpers en de scheduler.

4.1: De runtime helpers

De helpers van Phlo voor het uitvoeren van een doel buiten de band gebruiken allemaal de pool wanneer de app ervoor kiest, en vallen anders terug op een eenmalige subprocess:

Helper Doet
phlo_sync('Class::method', ...$args) Voert een doel uit en wacht op de retourwaarde
phlo_async('Class::method', ...$args) Plaatst een doel in de wachtrij voor een eenmalige uitvoering; retourneert zodra het is geaccepteerd
await($job, $job, ...) Voert veel doelen gelijktijdig uit en verzamelt hun resultaten
phlo_stream('Class::method', ...$args) Geeft de uitvoer van een doel regel voor regel terug

De opt-in is één constante in het app-entrypoint:

phlo_app(
    id: 'Api',
    host: 'api.example.com',
    daemon: 3001,
);

Met daemon ingesteld, dispatchen de helpers via het app pad naar de pool; zonder het, starten ze een eenmalig proces precies zoals voorheen. De app-code is in beide gevallen identiek, dus het aannemen van de daemon verandert alleen de doorvoer.

De winst is het grootst wanneer één verzoek zich verspreidt. await() over honderd taken is honderd app-opstarts op het eenmalige pad, maar honderd dispatches naar een residentiële pool met de daemon, begrensd door het aantal workers in plaats van een onbeperkte uitbarsting van subprocessen:

$results = await(
    ['translate::run', 'nl', $text],
    ['translate::run', 'de', $text],
    ['translate::run', 'fr', $text],
)

4.2: Planning zonder cron

De daemon kan doelen op een interval uitvoeren, wat de per-app cron-invoer achter de taken resource vervangt. Elke planningsinvoer is {app, target, every, build}: het absolute app.php pad, het doel, het interval in seconden, en of het eenmalig moet worden uitgevoerd. Elke wordt geactiveerd op zijn interval met de eerste uitvoering één interval na opstarten, net als een cron-tik:

[
    { app: '/srv/api/www/app.php',       target: 'tasks::run',  every: 60,  build: false },
    { app: '/srv/dashboard/www/app.php', target: 'fleet::poll', every: 120, build: true },
]

Alles stroomafwaarts blijft ongewijzigd: dezelfde %app->tasks matching, dezelfde due-check, dezelfde on-disk staat. Cron blijft de fallback voor hosts zonder een daemon; je kiest één trigger, niet beide.

We gebruiken essentiële cookies om deze site te laten werken. Met uw toestemming gebruiken we ook analytics om de site te verbeteren.