Download the PHP package rasuvaeff/yii3-webhooks-db without Composer

On this page you can find all versions of the php package rasuvaeff/yii3-webhooks-db. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package yii3-webhooks-db

rasuvaeff/yii3-webhooks-db

Stable Version Total Downloads Build Static analysis Psalm Level License Русская версия

Database storage for rasuvaeff/yii3-webhooks deliveries and nonces: a production-grade record of delivery attempts and atomic replay protection.

Using an AI coding assistant? llms.txt contains a compact API reference you can share with the model.

Requirements

Installation

Usage

Under yiisoft/config this package binds only WebhookDeliveryStorage and NonceStorage.

More than one worker

findPending() hands the same rows to every worker that asks and knows nothing about backoff, so two workers deliver the same event twice and a backlog of deliveries waiting out their backoff fills every batch while ready ones behind them starve. claimReady() leases instead:

Ownership is a lease, not a status: a claimed delivery stays Pending and becomes claimable again once claimed_at is older than leaseSeconds, so a worker that dies strands nothing. leaseSeconds must outlive the slowest delivery attempt, or two workers get the same delivery. A delivery that is out of attempts is handed out — nothing else could ever mark it Failed.

readyThresholds() comes from WebhookRetryPolicy in rasuvaeff/yii3-webhooks; the backoff rule is the core's and is never re-derived here. Each key governs every attempt count from itself up to the next key, so a map built by hand may skip counts without stranding the deliveries that land on them.

DbWebhookDeliveryStorage declares ClaimingDeliveryStorage, which is how a worker picks the claiming path:

Retention

Nothing else in this package removes a delivery row, so the table grows for as long as the application runs:

The default statuses are the terminal ones. Passing WebhookDeliveryStatus::Pending deletes work that was never done — a decision the caller has to make out loud.

Migration

Register the bundled migration (Rasuvaeff\Yii3WebhooksDb\Migration\M260612000000CreateWebhookTables) by namespace — no vendor paths:

Two migrations live in that namespace: M260612000000CreateWebhookTables creates both tables, and M260822120000AddDeliveryClaimColumns adds the claimed_at / claimed_by columns claimReady() needs. An installation that already ran the first one only gets the second. down() on the second works on MySQL and PostgreSQL only — yiisoft/db-sqlite cannot drop a column.

yiisoft/db-migration resolves the migration through Injector::make(), so it picks up the table-name value objects from the container the same way the storages do — no manual wiring needed beyond setSourceNamespaces() above.

Set the table names in params — the same values reach the migration and both storages (as WebhookDeliveryTableName / WebhookNonceTableName):

Index names follow the table names, so two installations can share one PostgreSQL schema — index names are unique per schema there, not per table.

Do not configure the migration through the DI container. M...::class => ['__construct()' => [...]] does not work: the migration is built by Injector::make(), which resolves arguments by type and never reads a container definition keyed by the migration's own class. Worse, adding that definition makes the container fatal at build time in every request, because the class is not autoloadable until the migration runner requires it. That recipe was documented in 1.x; it never worked.

API reference

DbWebhookDeliveryStorage

Method Description
save(delivery) Inserts the delivery, or updates the attempt state of one already stored; never writes the status of an existing row
findPending(limit) Returns pending deliveries, oldest first — no lease, no backoff
claimReady(now, readyThresholds, maxAttempts, leaseSeconds?, limit?) Leases the ready deliveries to this worker alone
releaseClaim(delivery) Gives a lease back early; false when there was none
markDelivered(delivery) Stores the delivery as succeeded, if it is still pending
markFailed(delivery) Stores the delivery as failed, if it is still pending
deleteOlderThan(threshold, ...statuses) Deletes deliveries created before the threshold; returns the row count. The terminal statuses are the default — passing statuses explicitly can include Pending, which deletes work that was never done
getById(id) Loads a delivery by id

DbNonceStorage

Method Description
has(nonce) Whether the nonce is already known
add(nonce) Atomic insert; returns false on a duplicate
deleteOlderThan(threshold) Drops stale nonces for retention cleanup

Security

Examples

See examples/ for a runnable SQLite example.

Development

License

BSD-3-Clause. See LICENSE.md.


All versions of yii3-webhooks-db with dependencies

PHP Build Version
Package Version
Requires php Version 8.3 - 8.5
psr/clock Version ^1.0
rasuvaeff/yii3-webhooks Version ^2.0
yiisoft/db Version ^2.0
yiisoft/db-migration Version ^2.1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package rasuvaeff/yii3-webhooks-db contains the following files

Loading the files please wait ...