Bulkgegevens
De *Many-methoden nemen arrays aan en retourneren de aangemaakte records of id's; de
*Stream-methoden nemen elke iterable aan, houden niets in het geheugen en retourneren een
aantal. Gebruik streams voor opnameprocessen waarbij de invoer groter is dan u in een PHP-array wilt bewaren. Bulkmethoden vergrendelen de collectie één keer en bufferen bij het log en de queue veel records per fsync, waardoor bulkbewerkingen per record meerdere keren sneller zijn dan losse aanroepen. DocStore-bulkschrijfbewerkingen synchroniseren elk recordbestand nog steeds; ze besparen op lockwisselingen, niet op fsync's.
DocStore-bulk-API's:
$records = $docs->putMany([
['slug' => 'home', 'kind' => 'page'],
['slug' => 'about', 'kind' => 'page'],
]);
$count = $docs->putStream($largeIterable);
$docs->exportJsonl(__DIR__ . '/pages.jsonl');
$docs->importJsonl(__DIR__ . '/pages.jsonl');
JSONL-rijen bestaan uit één object per regel, ofwel {"id": "...", "data": {...}} of
een kaal data-object (bij import wordt een id gegenereerd). Rijen kunnen expliciete
id's bevatten, zodat export en import een collectie exact heen en terug kunnen converteren.
SegmentedLog-bulk-API's:
$log->appendMany([
['type' => 'page.saved'],
['type' => 'page.rendered'],
]);
$log->appendStream($largeIterable);
Queue-bulk-API's:
$queue->enqueueMany([
['task' => 'render', 'pageId' => $home->id()],
['task' => 'notify', 'pageId' => $home->id()],
]);
$jobs = $queue->claimMany(100);
$queue->completeMany(array_map(fn ($job) => $job->id(), $jobs));
Met optionele partities worden de segmenten van een log opgeslagen in een map per dag of per maand
(events/partitions/2026-07-05/), zodat oude perioden als volledige mappen kunnen worden gearchiveerd
of verwijderd:
$daily = new Storh\SegmentedLog($root, 'events', partition: 'daily');
$monthly = new Storh\SegmentedLog($root, 'events', partition: 'monthly');
Bewaartermijnbeleid verwijdert logrecords ouder dan een grensdatum en compacteert de vrijgekomen
ruimte; purgeDone verwijdert voltooide queue-taken uit het geheugen:
$deleted = $log->retain()->olderThanDays(90)->compact();
$queue->purgeDone(olderThanSeconds: 86400);