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 draait tasks::run elke minuut op elke app in zijn hostmap, wat de per-app cron-invoer achter de tasks resource vervangt. Er is niets te configureren: de per-taak planning bevindt zich in %app->tasks (de every: op elke taak), en een app die de tasks resource niet laadt, wordt automatisch overgeslagen na zijn eerste tick:

{
	'dashboard.example.nl': { app: '/var/www/dashboard/www/app.php', build: true },
	'api.example.nl': { app: '/var/www/api/www/app.php', build: false },
}

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.