Download the PHP package rasuvaeff/yii3-ab-testing-clickhouse without Composer
On this page you can find all versions of the php package rasuvaeff/yii3-ab-testing-clickhouse. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download rasuvaeff/yii3-ab-testing-clickhouse
More information about rasuvaeff/yii3-ab-testing-clickhouse
Files in rasuvaeff/yii3-ab-testing-clickhouse
Package yii3-ab-testing-clickhouse
Short Description ClickHouse exposure and conversion trackers for Yii3 A/B testing
License BSD-3-Clause
Homepage https://github.com/rasuvaeff/yii3-ab-testing-clickhouse
Informations about the package yii3-ab-testing-clickhouse
rasuvaeff/yii3-ab-testing-clickhouse
ClickHouse exposure and conversion trackers for Yii3 A/B testing. Implements the
ExposureTracker and ConversionTracker interfaces from rasuvaeff/yii3-ab-testing,
buffering events in memory and writing them to ClickHouse in batches.
Using an AI coding assistant? llms.txt contains a compact API reference you can ingest in your prompt context.
Requirements
- PHP 8.3+
rasuvaeff/yii3-ab-testing^1.2rasuvaeff/clickhouse-toolkit^1.1- a PSR-18 HTTP client (for example
guzzlehttp/guzzle) for the ClickHouse connection
Installation
With Yii3 config-plugin this package binds ExposureTracker, ConversionTracker
and ClickHouseTrackingFlushMiddleware automatically. Do not bind the tracker
interfaces from another adapter at the same time or yiisoft/config reports a
Duplicate key error. To send events to several sinks, compose them with the
core CompositeExposureTracker / CompositeConversionTracker.
The DI factory pulls a Rasuvaeff\ClickHouseToolkit\ClickHouseClientFactory
from the container and uses it to build the batch writers. Bind the factory in
your application:
Database schema
DDL for the two event tables ships under migrations/ as ClickHouse *.sql
files, applied by the toolkit's ClickHouseMigrationRunner:
| Table | Columns |
|---|---|
ab_exposures |
experiment, variant, subject_id, is_forced, is_fallback, is_sticky, environment, ts |
ab_conversions |
experiment, variant, subject_id, goal, is_forced, is_fallback, is_sticky, environment, ts |
Both are MergeTree partitioned by toYYYYMM(ts); ts defaults to now().
Usage
Request-end flushing
Tracking never makes a network call on trackExposure() or trackConversion().
Rows are appended to an in-memory buffer and written on flush(). The package
ships ClickHouseTrackingFlushMiddleware for the recommended request-end flush:
The middleware wraps the downstream handler in try/finally, flushes both
trackers after the request, and swallows/logs flush failures so analytics never
breaks the user response.
If you do not use a PSR-15 pipeline, call flush() yourself once at request end
or from register_shutdown_function().
API reference
| Class | Description |
|---|---|
ClickHouseExposureTracker |
Buffers exposures; flush() batch-writes to ab_exposures |
ClickHouseConversionTracker |
Buffers conversions (with goal); flush() batch-writes to ab_conversions |
ClickHouseTrackingFlushMiddleware |
PSR-15 middleware that flushes both trackers safely at request end |
Security
- Connection credentials travel via the toolkit's
ClickHouseClientFactory(headers / config from env), never in URLs. The toolkit validates table and column identifiers and uses parameterized inserts. subject_idis stored verbatim and may be personally identifiable. Apply TTL / partition retention per your privacy policy.- Middleware swallows flush failures by design, so add logging/monitoring for the warning message if analytics delivery matters operationally.
Examples
See examples/ for a runnable script (no server required — uses an in-memory writer).
Development
License
BSD-3-Clause. See LICENSE.md.
All versions of yii3-ab-testing-clickhouse with dependencies
psr/http-message Version ^2.0
psr/http-server-handler Version ^1.0
psr/http-server-middleware Version ^1.0
psr/log Version ^3.0
rasuvaeff/clickhouse-toolkit Version ^1.1
rasuvaeff/yii3-ab-testing Version ^1.2