NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Plausible for Laravel

Cache, kolekcie a stránkovanie

Ľubovoľné terminálne volanie — aggregate(), timeseries(), breakdown(), run() alebo realtime() — uložíte do cache podľa deterministického podpisu dotazu. Zadajte sekundy alebo DateTimeInterface a voliteľne úložisko cache:

$result = Plausible::stats()
    ->for('my-site.com')
    ->metrics(Metric::Visitors)
    ->cache(300)                       // seconds; or ->cache(now()->addHour(), 'redis')
    ->aggregate();

Plausible::stats()->for('my-site.com')->last7Days()->cache(now()->addHour(), 'redis')->timeseries();
Plausible::stats()->for('my-site.com')->cache(30)->realtime();

Kľúč tvorí plausible:stats: a hash celého dotazu — typ, web, metriky, filtre, dimenzie, radenie, include, obdobie, interval, dátumy, porovnanie, vlastnosť a strana — takže rôzne dotazy nikdy nezdieľajú záznam. Do cache sa ukladá dekódovaná odpoveď a typovaný výsledok sa pri každom zásahu zostaví znova.

Kolekcie

Každý výsledok ponúka collect() — Illuminate\Support\Collection typovaných riadkov; aggregate() vráti kolekciu hodnôt podľa metrík:

use RoundlyConsulting\Plausible\Enums\Property;

Plausible::stats()->for('my-site.com')->breakdown(Property::VisitSource)->collect(); // Collection<int, BreakdownRow>
Plausible::stats()->for('my-site.com')->timeseries()->collect();                    // Collection<int, TimeseriesPoint>
Plausible::stats()->for('my-site.com')->aggregate()->collect();                     // ['visitors' => 2001, ...]

Automatické stránkovanie rozpadov

cursor() a each() transparentne prejdú všetky strany rozpadu pomocou PHP generátorov, takže stránkovaciu slučku nepíšete. Strany sa načítavajú priebežne, veľký rozpad sa teda nikdy nenačíta naraz:

use RoundlyConsulting\Plausible\Enums\Property;
use RoundlyConsulting\Plausible\Results\BreakdownRow;

foreach (Plausible::stats()->for('my-site.com')->cursor(Property::VisitSource) as $row) {
    // every row across every page
}

Plausible::stats()->for('my-site.com')->each(function (BreakdownRow $row) {
    // return false to stop early
}, Property::VisitSource);

Stránkovanie skončí na prvej strane s menej riadkami, než je perPage(). Vyššie perPage() prejde ten istý rozpad menším počtom väčších požiadaviek.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.