Skip to content

Latest commit

 

History

1,602 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Durable (PHP)

License: MIT

Durable is a PHP library for durable execution: long-running workflows coordinated with Temporal, with a cursor-based event journal, activities for side effects, and replay so workflow code stays deterministic.

This monorepo contains:

Package Path Role
gplanchat/durable src/Durable/ Core library (workflows, activities, event store, in-memory and integration surfaces)
gplanchat/durable-bundle src/DurableBundle/ Symfony bundle (Messenger, configuration, profiler)
gplanchat/durable-bridge-temporal src/Bridge/Temporal/ Temporal gRPC bridge (no official Temporal PHP SDK; see DUR006)
gplanchat/durable-bridge-dbal src/Bridge/Dbal/ Doctrine DBAL journal + stores: durable execution on one SQL database, no cluster (DUR030)
gplanchat/durable-bridge-illuminate src/Bridge/Illuminate/ Illuminate (Laravel) journal + stores on the connection Laravel already owns (DUR030)
gplanchat/durable-laravel src/DurableLaravel/ Laravel integration: binds the four storage ports from one published config file, work rides the application's queue
gplanchat/durable-plugin src/DurablePlugin/ Sylius 2 admin plugin: workflow dashboard, backend-neutral (DUR037)
gplanchat/durable-phpstan src/DurablePhpstan/ PHPStan extension: resolves stub calls against their typed contract
gplanchat/durable-rector src/DurableRector/ Rector rules migrating a project off the official Temporal PHP SDK
Sample app symfony/ Example Symfony application using the bundle + Temporal
Sylius shop sylius/ Sylius 2.2 Standard — where the admin dashboard is rendered for real

Booting the Sylius shop

Sylius Standard 2.2 requires PHP 8.3 and an extension set no PHP on a typical dev box carries in one place, so the shop runs on the image the skeleton ships with — never on the host PHP:

cd sylius
cp compose.override.dist.yml compose.override.yml   # monte l'app, et `../src` dont elle dépend
docker compose up -d                                # php 8.3, MySQL 8.4, nginx, mailhog
docker compose run --rm php composer install
docker compose run --rm php bin/console debug:router

composer.lock is tracked here, unlike in the upstream skeleton: this shop is a test bench in CI, and an unpinned resolve would let a Sylius release break the build with no commit of ours behind it.

Constraints aligned with project rules: no official Temporal PHP SDK, no RoadRunner as the Durable runtime (DUR006).

Requirements

  • PHP 8.2+
  • For Temporal gRPC: ext-grpc (see bridge and sample READMEs)

Quick start (monorepo)

From the repository root:

composer install
composer test

For the Symfony sample (workers, Docker, PHPUnit):

cd symfony
composer install
composer test

See symfony/README.md for Messenger consumers, DURABLE_DSN, and optional Temporal integration tests.

Documentation

Architecture decisions for this component use the DUR prefix under documentation/adr/ (see DUR000).

License

This project is released under the MIT License (SPDX identifier: MIT). The full text is in LICENSE; distribution policy is described in WA004.

About

Durable execution for PHP: workflows that survive deploys, restarts and crashes, and resume where they stopped. Symfony, Laravel, Sylius and Magento integrations. Monorepo — the published packages are subtree-splits of src/.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages