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);Prechod začne na strane 1 a 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. Keď prechod skončí alebo ho zastavíte, builder sa vráti na svoje page(), takže neskoršie breakdown() na tom istom builderi načíta znova svoju stranu. Bez vlastnosti vyhodia cursor() aj each() MissingConfiguration.
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.