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 kryptomienOdoslaní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.