266 Commits

Author SHA1 Message Date
github-actions[bot]
a69693c461 docs: update translations (#2285)
Translation updates for: config.md .

---------

Signed-off-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com>
Co-authored-by: henderkes <7896469+henderkes@users.noreply.github.com>
Co-authored-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com>
2026-03-17 10:06:32 +01:00
Alexandre Daubois
097563d262 feat(docs): add autocompletion docs (#2010)
Co-authored-by: henderkes <m@pyc.ac>
2026-03-16 09:38:14 +07:00
Alexandre Daubois
bd8f0c2be6 docs: adjust the translation for "harden" in French 2026-03-12 20:27:44 +01:00
github-actions[bot]
5734f466bc docs: update translations (#2263)
Translation updates for: hot-reload.md .

Co-authored-by: dunglas <57224+dunglas@users.noreply.github.com>
2026-03-11 10:19:04 +01:00
Matthieu Gostiaux
53dfd2fcce add fr trad for hot-reload.md (#2105)
Hello, there doesn't seem to be an open MR for translating the new hot
reload feature. Here's what I can offer.

---------

Signed-off-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com>
Signed-off-by: Kévin Dunglas <kevin@dunglas.fr>
Co-authored-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2026-03-10 10:55:29 +01:00
Kévin Dunglas
b49189ebf2 docs: improve hot reload, add missing features (#2261)
Updated wording for clarity and consistency in the hot reload
documentation.

---------

Signed-off-by: Kévin Dunglas <kevin@dunglas.fr>
Co-authored-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-09 16:58:11 +01:00
github-actions[bot]
c1e30cd638 docs: update translations (#2216)
Translation updates for: extension-workers.md .

---------

Co-authored-by: alexandre-daubois <2144837+alexandre-daubois@users.noreply.github.com>
Co-authored-by: Alexandre Daubois <alex.daubois@gmail.com>
2026-03-09 15:13:46 +01:00
github-actions[bot]
0774b141c9 docs: update translations (#2241)
Translation updates for: config.md .

---------

Signed-off-by: Kévin Dunglas <kevin@dunglas.fr>
Co-authored-by: dunglas <57224+dunglas@users.noreply.github.com>
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2026-03-09 14:18:13 +01:00
github-actions[bot]
9008b7bb14 docs: update translations (#2230)
Translation updates for: docker.md .

---------

Signed-off-by: Marc <m@pyc.ac>
Signed-off-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com>
Co-authored-by: alexandre-daubois <2144837+alexandre-daubois@users.noreply.github.com>
Co-authored-by: Marc <m@pyc.ac>
Co-authored-by: Alexandre Daubois <alex.daubois@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-09 14:09:31 +01:00
github-actions[bot]
ebc7ef0868 docs: update translations (#2176)
Translation updates for: performance.md .

---------

Co-authored-by: AlliBalliBaba <45872305+AlliBalliBaba@users.noreply.github.com>
Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: alexandre-daubois <2144837+alexandre-daubois@users.noreply.github.com>
2026-03-09 14:08:14 +01:00
github-actions[bot]
48a9c08ee0 docs: update translations (#2206)
Translation updates for: worker.md .

---------

Signed-off-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com>
Co-authored-by: dunglas <57224+dunglas@users.noreply.github.com>
Co-authored-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexandre Daubois <alex.daubois@gmail.com>
2026-03-09 14:07:59 +01:00
Mads Jon Nielsen
c099d665a2 feat(caddy): configurable max_idle_time for autoscaled threads (#2225)
Add configurable max_idle_time for autoscaled threads

The idle timeout for autoscaled threads is currently hardcoded to 5
seconds. With bursty traffic patterns, this causes threads to be
deactivated too quickly, leading to repeated cold-start overhead when
the next burst arrives.

This PR replaces the hardcoded constant with a configurable
max_idle_time directive, allowing users to tune how long idle
autoscaled threads stay alive before deactivation. The default remains 5
seconds, preserving existing behavior.

  Usage:

  Caddyfile:
````
  frankenphp {
      max_idle_time 30s
  }
````
  JSON config:
```
  {
      "frankenphp": {
          "max_idle_time": "30s"
      }
  }
````

  Changes:
  - New max_idle_time Caddyfile directive and JSON config option
  - New WithMaxIdleTime functional option
- Replaced hardcoded maxThreadIdleTime constant with configurable
maxIdleTime variable
  - Added tests for custom and default idle time behavior
  - Updated docs
2026-03-06 14:43:37 +01:00
Philippe DELENTE
8151c3a7f3 feat: add Spanish translation (#2096) 2026-03-03 11:41:21 +01:00
Alexander Stecher
dcfdb2f068 docs: hardened image with Caddy environment vars (#2229)
Adds `XDG_CONFIG_HOME` and `XDG_DATA_HOME` to the example hardened image
docs, otherwise Caddy will fail to use the nonexistent /home directory
instead of `/data/caddy` and `/config/caddy`.

Also removes an unnecessary `--chown=nonroot:nonroot`.
2026-03-02 08:46:59 +01:00
YL
0dd485c0f2 docs: document the extensionworkers api (#2055) 2026-02-22 12:45:09 +01:00
Alexander Stecher
b02d99ae8a feat: always ignore user abort (#2189)
Automatically sets `ignore_user_abort` to true in worker mode as
mentioned in #2186, removing the requirement to change it via ini.

Would also be possible to expose something like an explicit
`frankenphp_client_has_closed()` function for in-between critical
sections.

---------

Co-authored-by: Marc <m@pyc.ac>
2026-02-19 11:55:39 +01:00
Alexander Stecher
711d03256e docs: performance updates (#2173)
Some updates to the performance docs. Mainly creating this PR to test the automatic translations.
2026-02-10 11:12:15 +01:00
Alexander Stecher
46fa426c0d fix: translations (#2171)
Fixes translations in case of trailing slashes in the input
see https://github.com/php/frankenphp/actions/runs/21746819419
2026-02-08 21:09:13 +01:00
Marc
e3da54d15f Add apk repository, update debian repository instructions (#2099)
closes https://github.com/php/frankenphp/pull/1753
closes https://github.com/php/frankenphp/issues/2156

As per discussion here
https://github.com/php/frankenphp/discussions/2060#discussioncomment-15299936
I went ahead with different repos for different php versions. Versioned
support with stuff like `apt install frankenphp8.5` or `apk add
frankenphp85` are technically also ready, but I'm not running any CI for
that yet. I don't think it's worth it at this point as it would double
the amount of runs.

The old debian repository with only 8.4 is deprecated but will receive
updates for a few more months.
Every update/installation will print this notice, though, which will
hopefully make everyone aware:

```console
# running update from 8.4.15...
Unpacking php-zts-cli (8.4.16-1) ...
Setting up php-zts-cli (8.4.16-1) ...

================================================================================
                          ⚠️  DEPRECATION NOTICE
================================================================================

The single-version php-zts repository is deprecated and will no longer receive updates.

Please migrate to the new repository with different PHP versions available.

More information: https://pkgs.henderkes.com

================================================================================
```

Updated the installer to version 8.5.
2026-02-06 11:11:58 +01:00
Alexandre Daubois
fba79a6ac8 feat(extgen): make the generator idempotent and avoid touching the original source (#2011) 2026-02-05 12:50:28 +01:00
Kévin Dunglas
0f410a2e37 docs: remove outdated build tags 2026-02-03 14:52:16 +01:00
Kévin Dunglas
8e1641b81c ci: disable codespell linter (#2153) 2026-01-29 17:23:50 +01:00
Damien Fernandes
227977ec19 docs(docker): add an example of building distroless image (#1900)
Related to https://github.com/php/frankenphp/issues/151, this PR adds an
example about how building a distroless image for a Frankenphp project.

FYI, on https://github.com/dunglas/symfony-docker, it only saves ~24MB
in the image size.

I think we could go even further by building our own distroless image
with Bazel like they do
[here](https://github.com/GoogleContainerTools/distroless) but for now,
the doc is a good start.

---------

Co-authored-by: a.stecher <a.stecher@sportradar.com>
Co-authored-by: Alexander Stecher <45872305+AlliBalliBaba@users.noreply.github.com>
2026-01-26 18:15:12 +01:00
Marc
3ed8723a86 Require subscriber_jwt when publisher_jwt is set (#2141)
Added subscriber_jwt configuration requirement.

Signed-off-by: Marc <m@pyc.ac>
2026-01-26 16:13:38 +01:00
Alexander Stecher
0ccfb827fc docs: LLM translations
Adds a workflow that triggers every time the English docs are updated to translate to other languages.

---------

Co-authored-by: henderkes <m@pyc.ac>
2026-01-13 20:06:48 +01:00
Alexandre Daubois
c6b2b02277 fix(extgen): correctly handle const blocks to declare iota constants (#2086)
While continuing the work on #2011, I realized that constant
declarations have a problem when using `iota`. I mean, it technically
works, but const *blocks* we not supported which means that setting all
constants to `iota` as shown in the documentation was non-sensical, as
`iota` resets every time outside of const blocks.

So, this is between the bug fix and the feature. To me, it's a bug fix
as the behavior wasn't the one intended when creating extgen.
2026-01-12 15:44:46 +01:00
Alexandre Daubois
a6b0577c2c chore(docs): fix linter errors (#2103) 2025-12-29 18:00:38 +01:00
Kévin Dunglas
f4667e3b68 docs: WordPress (#2098)
https://github.com/user-attachments/assets/73bbf707-d34c-4518-82be-bf8a162ca969
2025-12-24 18:26:17 +01:00
Kévin Dunglas
89c97fda93 docs: logging (#2097)
Signed-off-by: Kévin Dunglas <kevin@dunglas.fr>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-24 18:17:40 +01:00
Kévin Dunglas
14c7db1cd0 docs: add hot reload docs (#2094)
Signed-off-by: Kévin Dunglas <kevin@dunglas.fr>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-24 17:33:15 +01:00
Alexandre Daubois
7fca07ed67 feat(types): expose IsPacked to help dealing with hashmaps and lists in Go code 2025-12-15 15:35:21 +01:00
Alexandre Daubois
bb1c3678dc feat(extgen): add support for callable in parameters (#1731) 2025-12-15 12:50:50 +01:00
Alexandre Daubois
694ab86cef doc(runtime): mention Symfony 7.4 native support for worker mode (#1668)
Fixes https://github.com/symfony/symfony-docs/issues/21099, related to
https://github.com/symfony/symfony/pull/60503
2025-12-14 17:06:28 +01:00
Marc
e23e0c571e update config doc for new deb/rpm packages (#2071) 2025-12-13 19:32:27 +01:00
Alexander Stecher
11213fd1de fix: returns a zend_array directly in types.go (#1894) 2025-12-12 22:55:58 +01:00
Francis Lavoie
d2007620a4 docs: Fix file extension in FrankenPHP configuration (#2067)
Corrected the file extension for additional configuration files in
FrankenPHP section.

---------

Signed-off-by: Francis Lavoie <lavofr@gmail.com>
2025-12-11 21:40:34 +01:00
Arkeins
7b8cf6b127 docs: wrong config path for autoloaded .caddyfile (#2059)
Hi !

I am playing with FrankenPHP, and frankly new to the thing so I may be
wrong.

The [current documentation](https://frankenphp.dev/docs/config/#docker)
mention that :

> /etc/frankenphp/caddy.d/*.caddy: additional configuration files that
are loaded automatically

But in the main Caddyfile ([here on
GitHub](https://github.com/php/frankenphp/blob/main/caddy/frankenphp/Caddyfile#L59))
imports differently:

```ini
import Caddyfile.d/*.caddyfile
```

This PR aims to correct this :)

Thank you for your time !

Signed-off-by: Arkeins <7311955+Arkeins@users.noreply.github.com>
2025-12-03 18:20:09 +01:00
Marc
12d4c3d09b [docs] update other languages based on English (#2044)
They were a little out of date, making use of AI to update them to the
same format.
2025-12-01 09:08:53 +01:00
Marc
abaf03c7f7 deduplicate installation instructions in README(#2013) 2025-11-26 08:19:27 +01:00
Marc
f28f6e8d03 docs: update docs for rpm packages and extension availability (#1988)
continues https://github.com/php/frankenphp/pull/1756

---------

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2025-11-21 14:31:43 +01:00
Antonin CLAUZIER
01beb66573 ci: PHP 8.5 (#2006)
Co-authored-by: Marc <m@pyc.ac>
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2025-11-21 13:54:07 +01:00
Ahmet Türk
f224f8e391 docs: fix minor typo (#1991) 2025-11-18 14:29:25 +01:00
Kévin Dunglas
41cb2bbeaa feat: mercure_publish() PHP function to dispatch Mercure updates (#1927)
* feat: mercure_publish() PHP function to dispatch Mercure updates

* fix stubs for old versions

* review

* cleanup and fixes
2025-11-18 09:59:53 +01:00
Alexandre Daubois
1e48fbb801 chore(docs): catch-up french translation (#1978) 2025-11-17 12:07:38 +01:00
Alexandre Daubois
18946308fd docs: remove superfluous arg in an example (#1972) 2025-11-14 15:12:56 +01:00
Marc
b22bdd987b update docs to remove old references to frankenphp:static-builder (#1950)
* update docs to remove old references to frankenphp:static-builder (we have -musl and -gnu)

* remove --platform and make gnu default

* add --platform back in (let dunglas decide)

* fix missed translations
2025-11-07 10:27:37 +01:00
Alexandre Daubois
94e58eb215 fix: replace file_put_contents() by file_get_contents() in Mercure docs 2025-10-28 15:00:43 +01:00
Michal Kleiner
fb1f46808e fix: typo in method name in example usage (#1935) 2025-10-22 09:14:36 +02:00
Florent Drousset
7f64673495 Fix small typo (#1934) 2025-10-21 17:50:00 +02:00
Kévin Dunglas
f7756717b5 feat: allow creating strongly typed slices and maps from PHP values with type utilities (#1933)
* feat: use generics in type functions for better type support

* various improvements

* better docs

* update docs
2025-10-21 11:20:54 +02:00