Liigu sisu juurde

Hulgiandmed

*Many meetodid võtavad massiive ja tagastavad loodud kirjed või ID-d; meetodid *Stream võtavad mis tahes itereeritava objekti, ei hoia midagi mälus ja tagastavad arvu. Kasutage vooge sisestustööde puhul, mille sisend on suurem, kui soovite hoida ühe PHP massiivina. Hulgimeetodid lukustavad kogu korra ning logi ja järjekorra puhul puhverdatakse ühe fsync-i kohta mitu kirjet, mistõttu on hulgikirjutused kirje kohta mitu korda kiiremad kui ühekaupa tehtavad kutsed. DocStore hulgikirjutused sünkroonivad siiski iga kirjefaili eraldi; need vähendavad luku korduvat kasutamist, mitte fsync-ide arvu.

DocStore'i hulgiliidesed:

PHP
$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 read on üks objekt rea kohta, kas {"id": "...", "data": {...}} kujul või lihtsalt andmeobjektina (importimisel luuakse ID). Ridadel võivad olla selgesõnalised ID-d, nii et eksport ja import taastavad kogu täpselt.

SegmentedLogi hulgiliidesed:

PHP
$log->appendMany([
    ['type' => 'page.saved'],
    ['type' => 'page.rendered'],
]);

$log->appendStream($largeIterable);

Queue'i hulgiliidesed:

PHP
$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));

Valikulised partitsioonid paigutavad logi segmendid päeva- või kuupõhisesse kataloogi (events/partitions/2026-07-05/), et vanemaid perioode saaks arhiveerida või tervete kataloogidena kustutada:

PHP
$daily = new Storh\SegmentedLog($root, 'events', partition: 'daily');
$monthly = new Storh\SegmentedLog($root, 'events', partition: 'monthly');

Säilitustähtaeg kustutab lõppkuupäevast vanemad logikirjed ja tihendab vabastatud ruumi; purgeDone eemaldab lõpetatud järjekorratööd mälust:

PHP
$deleted = $log->retain()->olderThanDays(90)->compact();
$queue->purgeDone(olderThanSeconds: 86400);