Pereiti prie turinio

Masiniai duomenys

*Many metodai priima masyvus ir grąžina sukurtus įrašus arba ID; *Stream metodai priima bet kokią iteruojamą seką, nieko nelaiko atmintyje ir grąžina skaičių. Duomenų įkėlimo užduotims naudokite srautus, kai įvestis didesnė, nei norite laikyti PHP masyve. Masiniai metodai kolekcijos užraktą paima vieną kartą, o žurnale ir eilėje prieš fsync buferizuoja daug įrašų, todėl masinis įrašymas vienam įrašui tenka kelis kartus greičiau nei po vieną kvietimą. DocStore masinis įrašymas vis tiek sinchronizuoja kiekvieną įrašo failą; taip sumažinamas užraktų kaitaliojimas, bet ne fsync skaičius.

DocStore masinės operacijos API:

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 eilutėse kiekvienoje eilutėje pateikiamas vienas objektas – arba {"id": "...", "data": {...}}, arba paprastas duomenų objektas (importuojant sugeneruojamas ID). Eilutėse gali būti aiškiai nurodyti ID, todėl eksportuojant ir importuojant kolekcija atkuriama tiksliai.

SegmentedLog masinės operacijos API:

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

$log->appendStream($largeIterable);

Queue masinės operacijos API:

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

Pasirenkami skaidiniai žurnalo segmentus saugo pagal dieną arba mėnesį sudarytuose aplankuose (events/partitions/2026-07-05/), todėl senus laikotarpius galima archyvuoti arba ištrinti kaip ištisus aplankus:

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

Saugojimo trukmės valdymo funkcija ištrina senesnius nei nurodyta data žurnalo įrašus ir sutankina atlaisvintą vietą; purgeDone iš atminties pašalina užbaigtas eilės užduotis:

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