{"id":13542935,"url":"https://github.com/temporalio/sdk-php","last_synced_at":"2026-03-03T11:02:58.814Z","repository":{"id":37094898,"uuid":"294536964","full_name":"temporalio/sdk-php","owner":"temporalio","description":"Temporal PHP SDK","archived":false,"fork":false,"pushed_at":"2025-03-19T07:56:22.000Z","size":4092,"stargazers_count":293,"open_issues_count":54,"forks_count":49,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-03-27T20:47:34.087Z","etag":null,"topics":["hacktoberfest","php","roadrunner","temporal","workflow","workflow-engine"],"latest_commit_sha":null,"homepage":"https://php.preview.thundergun.io","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/temporalio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-10T22:33:07.000Z","updated_at":"2025-03-24T21:18:23.000Z","dependencies_parsed_at":"2023-10-12T23:34:57.751Z","dependency_job_id":"61ebe3f2-5dda-4d13-8f0c-b002b3a3a983","html_url":"https://github.com/temporalio/sdk-php","commit_stats":{"total_commits":361,"total_committers":29,"mean_commits":"12.448275862068966","dds":"0.47645429362880887","last_synced_commit":"17ef494ab312adce103943b97c5091344e8ab441"},"previous_names":[],"tags_count":83,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/temporalio%2Fsdk-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/temporalio%2Fsdk-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/temporalio%2Fsdk-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/temporalio%2Fsdk-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/temporalio","download_url":"https://codeload.github.com/temporalio/sdk-php/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246815326,"owners_count":20838423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","php","roadrunner","temporal","workflow","workflow-engine"],"created_at":"2024-08-01T11:00:20.090Z","updated_at":"2026-03-03T11:02:58.808Z","avatar_url":"https://github.com/temporalio.png","language":"PHP","funding_links":[],"categories":["PHP","Temporal"],"sub_categories":["Videos"],"readme":"# Temporal PHP SDK\n\nTemporal is a distributed, scalable, durable, and highly available orchestration\nengine used to execute asynchronous long-running business logic in a scalable\nand resilient way.\n\nTemporal PHP SDK is the framework for authoring [Workflows](https://docs.temporal.io/workflows) and [Activities](https://docs.temporal.io/activities) using PHP language.\n\n**Table of contents:**\n- [Get starting](#get-starting)\n  - [Installation](#installation)\n  - [Usage](#usage)\n- [Testing](#testing)\n- [Dev environment](#dev-environment)\n  - [Temporal CLI](#temporal-cli)\n  - [Buggregator](#buggregator)\n- [Resources](#resources)\n- [License](#license)\n\n## Get starting\n\n### Installation\n\nInstall the SDK using Composer:\n\n```bash\ncomposer require temporal/sdk\n```\n\n[![PHP](https://img.shields.io/packagist/php-v/temporal/sdk.svg?style=flat-square\u0026logo=php)](https://packagist.org/packages/temporal/sdk)\n[![Stable Release](https://poser.pugx.org/temporal/sdk/version?style=flat-square)](https://packagist.org/packages/temporal/sdk)\n[![Total DLoads](https://img.shields.io/packagist/dt/temporal/sdk.svg?style=flat-square)](https://packagist.org/packages/temporal/sdk/stats)\n[![License](https://img.shields.io/packagist/l/temporal/sdk.svg?style=flat-square)](LICENSE.md)\n\nThe SDK includes two main components: [Clients](https://docs.temporal.io/develop/php/temporal-clients) and Workers.  \nThe Clients component is used to start, schedule, and manage Workflows;\nthe Workers component is used to execute Workflows and Activities.\n\nThe Clients component requires the [`grpc`](https://pecl.php.net/package/grpc) extension,\nand the Workers component requires [RoadRunner](https://roadrunner.dev).\nIt's recommended to use both components with the [`protobuf`](https://pecl.php.net/package/protobuf) extension\nin production to improve performance.\n\n|              | Client      | Worker      |\n|--------------|-------------|-------------|\n| RoadRunner   | —           | required    |\n| ext-grpc     | required    | —           |\n| ext-protobuf | recommended | recommended |\n\nTo download RoadRunner, you can use the following command:\n\n```bash\n./vendor/bin/rr get\n```\n\n### Usage\n\nIf you are using [Spiral](https://github.com/spiral/framework),\nfollow the [instructions in the documentation](https://spiral.dev/docs/temporal-configuration/).\n\nIf you are using the SDK without integrations, the following sections of the documentation may be helpful:\n- [How to run Worker Processes](https://docs.temporal.io/develop/php/core-application#run-a-dev-worker)\n- [How to develop a basic Workflow](https://docs.temporal.io/develop/php/core-application#develop-workflows)\n- [How to connect a Temporal Client to a Temporal Service](https://docs.temporal.io/develop/php/temporal-clients#connect-to-a-dev-cluster)\n- [How to start a Workflow Execution](https://docs.temporal.io/develop/php/temporal-clients#start-workflow-execution)\n\n\u003e [!NOTE]\n\u003e Check out [the repository with examples](https://github.com/temporalio/samples-php) of using the PHP SDK.\n\n\u003e [!WARNING]\n\u003e Since version [`2.11.0`](https://github.com/temporalio/sdk-php/releases/tag/v2.11.0),\n\u003e [feature flags](https://github.com/temporalio/sdk-php/blob/master/src/Worker/FeatureFlags.php) were introduced\n\u003e that change the behavior of the entire PHP worker.  \n\u003e It's recommended to disable deprecated behavior.\n\n## Testing\n\nThe PHP SDK includes a toolkit for testing Workflows.\nThere is [documentation](https://docs.temporal.io/develop/php/testing-suite) and [dev guide](testing/README.md) on how to test a Workflow using Activity mocking.\n\nTo ensure the determinism of a Workflow,\nyou can also use the [Replay API in tests](https://docs.temporal.io/develop/php/testing-suite#replay).\n\n## Dev environment\n\nSome recommendations for setting up a development environment:\n\n### Temporal CLI\n\nThe [Temporal CLI](https://docs.temporal.io/cli) provides direct access to a Temporal Service via the terminal.\nYou can use it to start, stop, inspect and operate on Workflows and Activities,\nand perform administrative tasks such as Namespace, Schedule, and Task Queue management.\nThe Temporal CLI also includes an embedded Temporal Service suitable for use in development and CI/CD.\nIt includes the Temporal Server, SQLite persistence, and the Temporal Web UI.\n\nRun the following command to start the Temporal Service in development mode:\n\n```bash\ntemporal server start-dev --log-level error\n```\n\nExperimental features:\n- Add flags `--dynamic-config-value frontend.enableUpdateWorkflowExecution=true --dynamic-config-value frontend.enableUpdateWorkflowExecutionAsyncAccepted=true`\nto enable the [Workflow Update feature](https://docs.temporal.io/encyclopedia/workflow-message-passing#sending-updates).\n- Add flag `--dynamic-config-value frontend.enableExecuteMultiOperation=true` to enable [`updateWithStart()` feature](https://php.temporal.io/classes/Temporal-Client-WorkflowClient.html#method_updateWithStart).\n- Add flag `--dynamic-config-value system.enableEagerWorkflowStart=true` to enable the [Eager Workflow Start feature](https://docs.temporal.io/develop/advanced-start-options#eager-start).\n\n### Buggregator\n\nDuring development, you might need to dump a variable, throw an error trace, or simply look at the call stack.\nSince Workflows and Activities run in RoadRunner workers, you cannot use `var_dump`,\n`print_r`, `echo`, and other functions that output data to STDOUT.\n\nInstead, use [Buggregator](https://buggregator.dev) along with [Trap](https://github.com/buggregator/trap).\nIn this case, dumps, traces, and logs will be sent via socket to your local Buggregator server,\nwhere you can view them in a convenient web interface.\n\n\u003e [!TIP]\n\u003e Trap is a wrapper around `symfony/var-dumper`, providing additional debugging capabilities.\n\u003e Moreover, Trap patches var-dumper for outputting protobuf structures, which is very handy when working with Temporal.\n\nTo run Buggregator in Docker, execute the command below\nand follow the [instructions](https://docs.buggregator.dev/config/var-dumper.html#configuration):\n\n```bash\ndocker run --rm -p 8000:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 ghcr.io/buggregator/server:latest\n```\n\nIf you are not using Docker or running PHP code outside a container, you can use Trap as a compact server:\n\n```bash\n./vendor/bin/trap --ui=8000\n```\n\nNow use the `trap()`, `tr()`, or `dump()` functions to output data to Buggregator.\nWeb UI will be available at `http://localhost:8000`.\n\n### IDE Plugin\n\nFor advanced autocomplete while coding in PHPStorm, use [Meta Storm plugin](https://github.com/xepozz/meta-storm-idea-plugin).\nThe plugin provides better autocomplete and links Workflow and Activity when writing and debugging code.\n\n## Resources\n\nRead the docs  \n[![Temporal Documentation](https://img.shields.io/static/v1?style=flat-square\u0026label=\u0026message=Documentation\u0026logo=Temporal\u0026color=7744ee)](https://docs.temporal.io/)\n[![PHP SDK Documentation](https://img.shields.io/static/v1?style=flat-square\u0026label=PHP+SDK\u0026message=Dev+guide\u0026logo=Temporal\u0026color=7766ee)](https://docs.temporal.io/develop/php)\n[![PHP SDK API](https://img.shields.io/static/v1?style=flat-square\u0026label=PHP+SDK\u0026message=API\u0026logo=PHP\u0026color=447723\u0026logoColor=aa88ff)](https://php.temporal.io/)\n\nAsk a question  \n[![Github issues](https://img.shields.io/static/v1?style=flat-square\u0026label=\u0026message=Issues\u0026logo=Github\u0026color=202020)](https://github.com/temporalio/sdk-php/issues)\n[![Slack](https://img.shields.io/static/v1?style=flat-square\u0026label=\u0026message=Slack\u0026logo=Slack\u0026color=cc4444)](https://t.mp/slack)\n[![Forum](https://img.shields.io/static/v1?style=flat-square\u0026label=\u0026message=Forum\u0026logo=Discourse\u0026color=4477ee)](https://community.temporal.io/tag/php-sdk)\n[![Discord](https://img.shields.io/static/v1?style=flat-square\u0026label=\u0026message=Discord\u0026logo=Discord\u0026color=333333)](https://discord.gg/FwmDtGQe55)\n\nStay tuned  \n[![Read Blog](https://img.shields.io/static/v1?style=flat-square\u0026label=\u0026message=Read+the+Blog\u0026logo=Temporal\u0026color=312f2b)](https://temporal.io/blog)\n[![Temporal YT Channel](https://img.shields.io/static/v1?style=flat-square\u0026label=\u0026message=Watch+on+Youtube\u0026logo=youtube\u0026color=b9002a)](https://www.youtube.com/temporalio)\n[![X](https://img.shields.io/badge/-Follow-black?style=flat-square\u0026logo=X)](https://x.com/temporalio)\n\nAdditionally  \n[![Temporal community](https://img.shields.io/static/v1?style=flat-square\u0026label=\u0026message=Community\u0026color=ff6644\u0026logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NyIgaGVpZ2h0PSI3NiI+PHBhdGggZD0iTTQyLjc0MDMgMTYuNTYyMkM0My43MjA0IDE3LjI3NzUgNDcuNjY3MyAyMC40Mjk3IDQ4LjY0NzQgMjEuMTk3OUM0OS42Mjc1IDIwLjM3NjcgNTMuNTc0NCAxNy4yNzc1IDU0LjU1NDUgMTYuNTYyMkM3NC41Mjc0IDEuNjIyMjggOTAuNTAwNSAtMi44MDE0MiA5NC45NTA3IDEuNjQ4NzhDOTkuNDAwOSA2LjA5ODk4IDk1LjAwMzcgMjIuMDQ1NSA4MC4wMzcyIDQyLjA0NUM3OS4zMjIgNDMuMDI1MSA3Ni4xNjk4IDQ2Ljk3MiA3NS40MDE2IDQ3Ljk1MjFDNzEuNjY2NiA1Mi40ODE3IDY3LjQ4MTMgNTcuMTk2OCA2Mi42ODY3IDYxLjk5MTRDNTcuODkyMSA2Ni43ODYgNTMuMjMgNzAuOTcxMyA0OC42NDc0IDc0LjcwNjNDNDQuMTE3NyA3MC45NzEzIDM5LjQwMjYgNjYuNzg2IDM0LjYwOCA2MS45OTE0QzI5LjgxMzUgNTcuMTk2OCAyNS42MjgyIDUyLjUzNDcgMjEuODkzMiA0Ny45NTIxQzIxLjA3MiA0Ni45NzIgMTcuOTcyOCA0My4wMjUxIDE3LjI1NzYgNDIuMDQ1QzIuMzE3NiAyMi4wNzIgLTIuMTA2MTEgNi4wOTg5OSAyLjM0NDA5IDEuNjQ4NzlDNi43OTQyOSAtMi44MDE0MSAyMi43NjczIDEuNjIyMjcgNDIuNzQwMyAxNi41NjIyWiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==)](https://temporal.io/community)\n[![Awesome Temporal](https://img.shields.io/static/v1?style=flat-square\u0026label=\u0026message=Awesome+Temporal\u0026logo=Awesome-Lists\u0026color=4b4567)](https://github.com/temporalio/awesome-temporal)\n\n\n## License\n\nTemporal PHP SDK is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftemporalio%2Fsdk-php.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftemporalio%2Fsdk-php?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftemporalio%2Fsdk-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftemporalio%2Fsdk-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftemporalio%2Fsdk-php/lists"}