https://github.com/bottledcode/durable-php
https://github.com/bottledcode/durable-php
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/bottledcode/durable-php
- Owner: bottledcode
- License: mit
- Created: 2023-05-07T23:46:50.000Z (almost 3 years ago)
- Default Branch: v2
- Last Pushed: 2025-08-13T18:33:05.000Z (7 months ago)
- Last Synced: 2025-08-13T20:41:36.428Z (7 months ago)
- Language: PHP
- Size: 22 MB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: docs/readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Overview
Durable PHP is a self-hosted FaaS engine, heavily influenced by Durable Functions in C#.
Durable PHP helps you write stateful workflows by writing [orchestrations](orchestrations.md)
and [entities](entities.md)
(aka actors).
## Infrastructure Requirements
| Requirement | Provides |
| ---------------------------------------- | --------------------------------------------------- |
| PHP 8.3+ | Language |
(¹) optional, replaces other requirement
(²) not implemented yet
## Getting Started
Download the cli and run `dphp init` to create a simple project.
## Patterns
The primary use-case for Durable PHP is simplifying complex, stateful coordination requirements in any application.
You can view the following sections to view some common patterns:
- [Chaining](chaining.md)
- [Fan-in/Fan-out](fan-in-out.md)
- [Monitoring](monitoring.md)
- [Human interaction](human-interaction.md)
- [Aggregation](aggregation.md)
- [Idempotent side-effects](activities.md)
## Technology
Durable PHP is built on composable event-sourcing, where every operation/event/signal is composed of multiple events.
This allows for flexible operations, prioritizing, and scaling. Originally, a partitioned approach was taken (similar to
durable functions) to remove the need for distributed locking; however, through testing, it was discovered that a
distributed lock was more scalable, where a partitioned approach was far more complex to scale.
## Code constraints
To provide long-running execution guarantees in orchestrations, orchestrations have a set [of rules](orchestration-rules.md)
that must be adhered to. We recommend PHPStan with the durable-php code rules applied (todo).