Download the PHP package farzai/breaker without Composer

On this page you can find all versions of the php package farzai/breaker. 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 breaker

Circuit Breaker - PHP

Latest Version on Packagist Tests codecov Total Downloads

A production-ready PHP Circuit Breaker implementation for building resilient applications with PSR-14 compliant event system, type-safe event objects, and comprehensive monitoring capabilities.

Features

Installation

Requirements

Basic Usage

The easiest way to get started is using the Breaker facade, which provides a clean, Laravel-inspired API:

Why use the Breaker facade?

Configuring Services

Health Monitoring

Dependency Injection (Recommended for Production)

For production applications, use dependency injection for better testability:

💡 Tip: The facade (Breaker::protect()) is perfect for quick scripts and simple use cases. For production services, inject BreakerManager for better testability.

See examples/dependency_injection.php for complete examples.

Event Listeners

Monitor circuit breaker events to track failures, state changes, and performance:

Event Priority

Control the execution order of listeners using priorities (higher = earlier):

Event Propagation Control

Stop event propagation to prevent subsequent listeners from executing:

Event Subscribers

For better organization, group related event listeners into subscriber classes:

Built-in Subscribers

The library provides ready-to-use subscribers:

LoggingSubscriber

Automatically logs all circuit breaker events using PSR-3 logger:

MetricsSubscriber

Automatically collects metrics for all events:

Storage Architecture

The circuit breaker features a modern, pattern-based storage layer with multiple design patterns for flexibility and scalability.

Quick Start

By default, circuit state is stored in memory. For production, use persistent file storage:

Available Storage Adapters

File Storage

Persistent filesystem storage with atomic writes:

In-Memory Storage

Fast, non-persistent storage for testing or short-lived processes:

PSR-16 Cache Adapter

Use any PSR-16 cache implementation (Redis, Memcached, etc.):

Advanced Storage Patterns

With Decorators (Logging, Metrics, Retry)

High Availability with Fallback Chain

Storage Features

✅ SHA-256 Key Hashing - Prevents service key collisions ✅ Atomic Writes - Prevents data corruption ✅ File Locking - Thread-safe concurrent access ✅ Automatic Cleanup - Orphaned temp file detection ✅ PSR-16 Support - Redis, Memcached, any cache ✅ Decorator Pattern - Composable logging, metrics, retry ✅ Fallback Chain - High availability ✅ TTL Support - Automatic expiration

Circuit Breaker States

The circuit breaker operates in three states:

  1. CLOSED: All requests pass through to the service. This is the default state when everything is working normally.
  2. OPEN: Requests fail fast without calling the service. This happens after the failure threshold is reached, protecting your system from cascading failures.
  3. HALF-OPEN: After the timeout period, the circuit allows a limited number of test requests to check if the service has recovered.

Best Practices

Service Isolation

Configure different services with appropriate thresholds:

Appropriate Thresholds

Configure thresholds based on service characteristics:

Always Use Fallbacks

Always provide fallbacks for critical operations:

Monitoring Circuit Health

Use event subscribers for comprehensive monitoring:

Circuit Breaker Pattern Integration

Integrate circuit breakers within your application architecture using dependency injection:

Event System Features

PSR-14 Compliance

The event system is fully PSR-14 compliant, making it compatible with standard PHP event dispatching tools and libraries. All event objects and the event dispatching mechanism follow the PSR-14 standard for event dispatcher interfaces.

Available Event Types

All events extend AbstractCircuitEvent and provide:

Event Class When Fired Key Methods
CircuitStateChangedEvent Any state transition getPreviousState(), getNewState(), isTransitionToOpen()
CircuitOpenedEvent Circuit transitions to open getFailureCount(), getFailureThreshold(), getHalfOpenTimestamp()
CircuitClosedEvent Circuit transitions to closed getPreviousState(), isRecovery()
CircuitHalfOpenedEvent Circuit transitions to half-open getSuccessThreshold()
CallSucceededEvent Protected call succeeds getResult(), getExecutionTime()
CallFailedEvent Protected call fails getException(), getExecutionTime(), willTriggerOpen()
FallbackExecutedEvent Fallback is executed getResult(), getOriginalException(), getExecutionTime()

All events provide common methods:

Exception-Safe Dispatching

Event listeners are exception-safe - if a listener throws an exception, it won't break the circuit breaker:

Execution Metrics

Track performance with built-in execution time tracking:

Immutable Event Objects

All event objects are immutable - their state cannot be changed after creation, ensuring data consistency:

Manual Usage (Advanced)

For advanced use cases where you need fine-grained control, you can manually instantiate CircuitBreaker instances:

When to use manual instantiation:

For most use cases, we recommend using the Breaker facade or BreakerManager instead.

License

This project is licensed under the MIT License - see the LICENSE file for details.


All versions of breaker with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
psr/log Version ^3.0
psr/event-dispatcher Version ^1.0
psr/simple-cache Version ^3.0
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 farzai/breaker contains the following files

Loading the files please wait ...