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
Kévin Dunglas
8341cc98c6
refactor: rely on context.Context for log/slog and others ( #1969 )
...
* refactor: rely on context.Context for log/slog and others
* optimize
* refactor
* Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix watcher-skip
* better globals handling
* fix
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-11-17 16:32:23 +01:00
Alexander Stecher
bf6e6534f6
fix: exit() and dd() support in worker mode ( #1946 )
...
* Verifies exit behavior.
* formatting
* Checks for actual exit.
* Fixes test.
* Fixes test.
* Update testdata/dd.php
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
---------
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2025-10-28 10:57:50 +01:00
SpencerMalone
1f6f768c97
fix: release but don't free CLI streams when executing cli scripts ( #1906 )
...
* Bring upstream commit https://github.com/php/php-src/commit/0a4a55fd4496523c67e929f2c2be5d11dfdd3de2 into cli_register_file_handles to release but not free stdout/in/err.
Fixes being unable to log to stdout or error after using frankenphp.ExecutePHPCode
* chore: clang-format
---------
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2025-10-08 17:07:54 +02:00
Rob Landers
52df300f86
feat: custom workers initial support ( #1795 )
...
* create a simple thread framework
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* add tests
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* fix comment
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* remove mention of an old function that no longer exists
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* simplify providing a request
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* satisfy linter
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* add error handling and handle shutdowns
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* add tests
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* pipes are tied to workers, not threads
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* fix test
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* add a way to detect when a request is completed
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* we never shutdown workers or remove them, so we do not need this
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* add more comments
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* Simplify modular threads (#1874 )
* Simplify
* remove unused variable
* log thread index
* feat: allow passing parameters to the PHP callback and accessing its return value (#1881 )
* fix formatting
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* fix test compilation
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* fix segfaults
Signed-off-by: Robert Landers <landers.robert@gmail.com >
* Update frankenphp.c
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
---------
Signed-off-by: Robert Landers <landers.robert@gmail.com >
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2025-09-18 09:21:49 +02:00
Alexander Stecher
78bc5c87d8
fix: free request context if php_request_startup() errors ( #1842 )
2025-08-28 17:29:10 +02:00
Alexander Stecher
952754db27
fix: don't flush env between requests ( #1814 )
2025-08-27 08:30:40 +02:00
Alexander Stecher
c10e85b905
refactor: cleanup context ( #1816 )
...
* Removes NewRequestWithContext.
* Moves cgi logic to cgi.go
* Calls 'update_request_info' from the C side.
* Calls 'update_request_info' from the C side.
* clang-format
* Removes unnecessary export.
* Adds TODO.
* Adds TODO.
* Removes 'is_worker_thread'
* Shortens return statement.
* Removes the context refactor.
* adjusts comment.
* Skips parsing cgi path variables on explicitly assigned worker.
* suggesions by @dunglas.
* Re-introduces 'is_worker_thread'.
* More formatting.
2025-08-25 16:18:20 +02:00
Alexandre Daubois
8175ae7e8c
chore: miscellaneous fix in C code ( #1766 )
2025-07-24 10:24:38 +02:00
Alexandre Daubois
b80cb6cdea
chore: cleanup duplication in sapi_cli_register_variables() ( #1716 )
2025-07-05 19:05:38 +02:00
Alexandre Daubois
29c88c0fec
feat: use modern ZEND_PARSE_PARAMETERS_NONE() macro ( #1704 )
2025-06-30 14:50:11 +02:00
Alexandre Daubois
8d88c13795
chore: remove TODO items not relevant anymore ( #1694 )
2025-06-27 14:36:09 +02:00
Alexandre Daubois
d2a1b619a5
feat: expose SSL_CIPHER env var ( #1693 )
2025-06-27 14:27:20 +02:00
Kévin Dunglas
abfd893d88
feat: FrankenPHP extensions ( #1651 )
...
* feat: add helpers to create PHP extensions (#1644 )
* feat: add helpers to create PHP extensions
* cs
* feat: GoString
* test
* add test for RegisterExtension
* cs
* optimize includes
* fix
* feat(extensions): add the PHP extension generator (#1649 )
* feat(extensions): add the PHP extension generator
* unexport many types
* unexport more symbols
* cleanup some tests
* unexport more symbols
* fix
* revert types files
* revert
* add better validation and fix templates
* remove GoStringCopy
* small fixes
---------
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* try to fix tests
* fix CS
* try some workarounds
* try some workarounds
* ingore TestRegisterExtension
* exclude cgo tests in Docker images
* fix
* workaround...
* race detector
* simplify tests and code
* make linter happy
* feat(gofile): use templates to generate the Go file (#1666 )
---------
Co-authored-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com >
2025-06-25 10:18:22 +02:00
Rob Landers
a59b649dac
fix: headers before flushing ( #1622 )
...
* add tests
* fix test
* attempt to send headers when flushing
* Update testdata/only-headers.php
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
---------
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2025-06-01 14:58:36 +02:00
Kévin Dunglas
c522b52804
fix: exit(), die() and uncaught exceptions must stop the worker
2025-05-21 01:19:22 +02:00
Alexander Stecher
3741782330
feat: '-r' option for php-cli ( #1482 )
2025-05-01 02:06:31 +02:00
Pierre Tondereau
729cf9bba1
fix: module reload on request startup ( #1476 )
2025-04-01 20:54:24 +02:00
Gina Peter Banyard
3701516e5e
refactor: call opcache_reset PHP function directly ( #1401 )
...
* Call opcache_reset PHP function directly
* prevent warning
* cleanup
* remove frankenphp_execute_php_function
* cs
---------
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2025-03-24 11:29:13 +01:00
Alexander Stecher
432824edf1
fix: ensure env is not in an invalid state on shutdown ( #1442 )
2025-03-19 13:22:06 +01:00
Kévin Dunglas
424ca426cb
fix: timeouts handling on macOS ( #1435 )
...
* ci: run tests on macOS
* debug
* debug
* fix
* nobrotli
* install brotli
* fix
* fix
* Also registers php.ini if ZEND_MAX_EXECUTION_TIMERS is disabled.
* Removes max_execution_time from tests (it gets overwritten on mac)
* tiny refacto
* fix free
* cs
---------
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
2025-03-11 17:34:49 +01:00
Alexander Stecher
f50248a7d2
refactor: removes context on the C side ( #1404 )
2025-03-10 08:44:03 +01:00
Alexander Stecher
c57f741d83
fix: concurrent env access ( #1409 )
2025-03-01 14:45:04 +01:00
Alliballibaba2
072151dfee
feat: Adds automatic thread scaling at runtime and php_ini configuration in Caddyfile ( #1266 )
...
Adds option to scale threads at runtime
Adds php_ini configuration in Caddyfile
2025-02-19 20:39:33 +01:00
Kévin Dunglas
251567a617
fix: Mercure duplicate metrics panic ( #1393 )
...
* fix: Mercure duplicate metrics panic
* tidy
* ci: clang-format
2025-02-19 12:40:59 +01:00
Niels Dossche
f109f0403b
perf: avoid redundant work in frankenphp_release_temporary_streams()
...
Persistent streams are of type le_pstream, not le_stream. Therefore, the
persistent check will always be false. We can thus replace that check
with an assertion.
`zend_list_delete` removes the entry from the regular_list table, and
calls `zend_resource_dtor` via the table destructor.
When the refcount is 1, `zend_list_close` calls `zend_resource_dtor`,
but keeps the entry in the table.
Multiple calls to `zend_resource_dtor` have no effect: the destructor is
only called once.
Therefore, the `zend_list_close` operation is redundant because it is
fully included in the work done by `zend_list_delete`.
2025-02-19 00:16:00 +01:00
Niels Dossche
30bf69cbe5
perf: avoid extra string allocation in get_full_env() ( #1382 )
...
* Avoid extra string allocation in get_full_env()
We can pass the key directly to add_assoc_str().
* Use add_assoc_str_ex
2025-02-18 09:11:23 +01:00
Alexander Stecher
dd250e3bda
perf: optimized request headers ( #1335 )
...
* Optimizes header registration.
* Adds malformed cookie tests.
* Sets key to NULL (releasing them is unnecessary)
* Adjusts test.
* Sanitizes null bytes anyways.
* Sorts headers.
* trigger
* clang-format
* More clang-format.
* Updates headers and tests.
* Adds header test.
* Adds more headers.
* Updates headers again.
* ?Removes comments.
* ?Reformats headers
* ?Reformats headers
* renames header files.
* ?Renames test.
* ?Fixes assertion.
* test
* test
* test
* Moves headers test to main package.
* Properly capitalizes headers.
* Allows and tests multiple cookie headers.
* Fixes comment.
* Adds otter back in.
* Verifies correct capitalization.
* Resets package version.
* Removes debug log.
* Makes persistent strings also interned and saves them once on the main thread.
---------
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
2025-01-27 21:48:20 +01:00
Alexander Stecher
7e39e0a201
Fix: only flush temporary unreferenced streams ( #1351 )
...
* Only flush temporary streams.
---------
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
2025-01-27 00:25:12 +01:00
Rob Landers
05aafc7c44
fix memory leaks ( #1350 )
...
* fix a memory leak on thread shutdown
* clean up unused resources at end of request
* try the obvious
* Test
* clang-format
* Also ignores persistent streams.
* Adds stream test.
* Moves clean up function to frankenphp_worker_request_shutdown.
* Fixes test on -nowatcher
* Fixes test on -nowatcher
* Update testdata/file-stream.txt
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update frankenphp_test.go
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
---------
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2025-01-25 22:54:04 +01:00
Viktor Szépe
eee1de147e
chore: fix CS ( #1345 )
2025-01-21 11:27:46 +01:00
Viktor Szépe
ece420c569
chore: fix typos ( #1328 )
...
* Fix typos
* Fix indentation
2025-01-21 00:32:52 +01:00
Alexander Stecher
2f4c8310e2
fix - flushing temporary files after each worker request ( #1321 )
...
* Removes temporary fix and flushes files on each request.
2025-01-20 18:45:00 +01:00
Alexander Stecher
2b7b3d1e4b
perf: put all $_SERVER vars into one function call. ( #1303 )
...
* Puts everything into one function call.
* Clang-format off.
* Cleans up.
* Changes function name.
* Removes unnecessary check.
* Passes hash table directly.
* Also tests that the original request path is passed.
* Puts vars into a struct.
* clang-format
---------
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
2025-01-08 08:23:23 +01:00
Alliballibaba2
f592e0f47b
refactor: decouple worker threads from non-worker threads ( #1137 )
...
* Decouple workers.
* Moves code to separate file.
* Cleans up the exponential backoff.
* Initial working implementation.
* Refactors php threads to take callbacks.
* Cleanup.
* Cleanup.
* Cleanup.
* Cleanup.
* Adjusts watcher logic.
* Adjusts the watcher logic.
* Fix opcache_reset race condition.
* Fixing merge conflicts and formatting.
* Prevents overlapping of TSRM reservation and script execution.
* Adjustments as suggested by @dunglas.
* Adds error assertions.
* Adds comments.
* Removes logs and explicitly compares to C.false.
* Resets check.
* Adds cast for safety.
* Fixes waitgroup overflow.
* Resolves waitgroup race condition on startup.
* Moves worker request logic to worker.go.
* Removes defer.
* Removes call from go to c.
* Fixes merge conflict.
* Adds fibers test back in.
* Refactors new thread loop approach.
* Removes redundant check.
* Adds compareAndSwap.
* Refactor: removes global waitgroups and uses a 'thread state' abstraction instead.
* Removes unnecessary method.
* Updates comment.
* Removes unnecessary booleans.
* test
* First state machine steps.
* Splits threads.
* Minimal working implementation with broken tests.
* Fixes tests.
* Refactoring.
* Fixes merge conflicts.
* Formatting
* C formatting.
* More cleanup.
* Allows for clean state transitions.
* Adds state tests.
* Adds support for thread transitioning.
* Fixes the testdata path.
* Formatting.
* Allows transitioning back to inactive state.
* Fixes go linting.
* Formatting.
* Removes duplication.
* Applies suggestions by @dunglas
* Removes redundant check.
* Locks the handler on restart.
* Removes unnecessary log.
* Changes Unpin() logic as suggested by @withinboredom
* Adds suggestions by @dunglas and resolves TODO.
* Makes restarts fully safe.
* Will make the initial startup fail even if the watcher is enabled (as is currently the case)
* Also adds compareAndSwap to the test.
* Adds comment.
* Prevents panic on initial watcher startup.
2024-12-17 11:28:51 +01:00
Alliballibaba2
b4748ee110
fix: don’t ignore empty request headers ( #1182 )
...
* Fixes empty request headers.
* Formatting
2024-11-21 12:58:01 +01:00
Rob Landers
0c123a2563
remove opcache_reset ( #1173 )
...
* remove opcache_reset
* reset opcache if the function exists
* simplify the check
* reformat
2024-11-17 19:19:53 +01:00
Kévin Dunglas
9013614801
fix: sapi_module.getenv() should delegate to Go
2024-11-10 15:49:05 +01:00
Alexander Stecher
e5ca97308e
perf: optimize $_SERVER import ( #1106 )
...
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
Co-authored-by: a.stecher <a.stecher@sportradar.com >
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
2024-11-04 15:34:00 +01:00
Rob Landers
e812473fe1
implement getenv and putenv in go ( #1086 )
...
* implement getenv and putenv in go
* fix typo
* apply formatting
* return a bool
* prevent ENV= from crashing
* optimization
* optimization
* split env workflows and use go_strings
* clean up unused code
* update tests
* remove useless sprintf
* see if this fixes the asan issues
* clean up comments
* check that VAR= works correctly and use actual php to validate the behavior
* move all unpinning to the end of the request
* handle the case where php is not installed
* fix copy-paste
* optimization
* use strings.cut
* fix lint
* override how env is filled
* reuse fullenv
* use corect function
2024-10-18 13:47:11 +02:00
Kévin Dunglas
e864142a7b
fix: always include pthread.h
2024-10-18 11:36:53 +02:00
Alexander Stecher
ea7a514389
perf: only import os environment variables once per worker thread ( #1080 )
...
Co-authored-by: a.stecher <a.stecher@sportradar.com >
2024-10-15 12:03:58 +02:00
Alexander Stecher
d99b16a158
perf: remove all cgo handles ( #1073 )
...
* Removes Cgo handles and adds phpThreads.
* Changes variable name.
* Changes variable name.
* Fixes merge error.
* Removes unnecessary 'workers are done' check.
* Removes panic.
* Replaces int with uint32_t.
* Changes index type to uintptr_t.
* simplify
---------
Co-authored-by: a.stecher <a.stecher@sportradar.com >
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2024-10-09 07:31:09 +02:00
Alexander Stecher
8d9b6e755b
feat: restart workers when on source changes ( #1013 )
...
* Adds filesystem watcher with tests.
* Refactoring.
* Formatting.
* Formatting.
* Switches to absolute path in tests.
* Fixes race condition from merge conflict.
* Fixes race condition.
* Fixes tests.
* Fixes markdown lint errors.
* Switches back to absolute paths.
* Reverts back to relative file paths.
* Fixes golangci-lint issues.
* Uses github.com/dunglas/go-fswatch instead.
* Stops watcher before stopping workers.
* Updates docs.
* Avoids segfault in tests.
* Fixes watcher segmentation violations on shutdown.
* Adjusts watcher latencies and tests.
* Adds fswatch to dockerfiles
* Fixes fswatch in alpine.
* Fixes segfault (this time for real).
* Allows queueing new reload if file changes while workers are reloading.
* Makes tests more consistent.
* Prevents the watcher from getting stuck if there is an error in the worker file itself.
* Reverts changing the image.
* Puts fswatch version into docker-bake.hcl.
* Asserts instead of panicking.
* Adds notice
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update dev.Dockerfile
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update Dockerfile
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update Dockerfile
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update alpine.Dockerfile
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update alpine.Dockerfile
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update dev-alpine.Dockerfile
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update dev-alpine.Dockerfile
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update dev.Dockerfile
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update docs/config.md
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Runs fswatch version.
* Removes .json.
* Replaces ms with s.
* Resets the channel after closing it.
* Update watcher_options.go
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update watcher_test.go
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Asserts no error instead.
* Fixes a race condition where events are fired after frankenphp has stopped.
* Updates docs.
* Update watcher_options_test.go
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Allows queuing events while watchers are reloading.
* go fmt
* Refactors stopping and draining logic.
* Allows extended watcher configuration with dirs, recursion, symlinks, case-sensitivity, latency, monitor types and regex.
* Updates docs.
* Adds TODOS.
* go fmt.
* Fixes linting errors.
* Also allows wildcards in the longform and adjusts docs.
* Adds debug log.
* Fixes the watcher short form.
* Refactors sessions and options into a struct.
* Fixes an overflow in the 'workersReadyWG' on unexpected terminations.
* Properly logs errors coming from session.Start().
* go fmt.
* Adds --nocache.
* Fixes lint issue.
* Refactors and resolves race condition on worker reload.
* Implements debouncing with a timer as suggested by @withinboredom.
* Starts watcher even if no workers are defined.
* Updates docs with file limit warning.
* Adds watch config unit tests.
* Adjusts debounce timings.
* go fmt.
* Adds fswatch to static builder (test).
* Adds a short grace period between stopping and destroying the watcher sessions.
* Adds caddy test.
* Adjusts sleep time.
* Swap to edant/watcher.
* Fixes watch options and tests.
* go fmt.
* Adds TODO.
* Installs edant/watcher in the bookworm image.
* Fixes linting.
* Refactors the watcher into its own module.
* Adjusts naming.
* ADocker image adjustments and refactoring.
* Testing installation methods.
* Installs via gcc instead.
* Fixes pointer formats.
* Fixes lint issues.
* Fixes arm alpine and updates docs.
* Clang format.
* Fixes dirs.
* Adds watcher version arg.
* Uses static lib version.
* Adds watcher to tests and sanitizers.
* Uses sudo for copying the shared lib.
* Removes unnused func.
* Refactoring.
* Update .github/workflows/sanitizers.yaml
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Adds fpic.
* Fixes linting.
* Skips tests in msan.
* Resets op_cache in every worker thread after termination
* Review fixes part 1.
* Test: installing libstc++ instead of gcc.
* Test: using msan ignorelist.
* Test: using msan ignorelist.
* Test: using msan ignorelist.
* Allows '/**/' for global recursion and '**/' for relative recursion.
* Reverts using the ignorelist.
* Calls opcache directly.
* Adds --watch to php-server command
* Properly free CStrings.
* Sorts alphabetically and uses curl instead of git.
* Labeling and formatting.
* Update .github/workflows/sanitizers.yaml
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update .github/workflows/sanitizers.yaml
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update .github/workflows/tests.yaml
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update .github/workflows/tests.yaml
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update caddy/caddy.go
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update docs/config.md
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update frankenphp_with_watcher_test.go
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update watcher/watcher.h
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update frankenphp.c
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update watcher/watcher.go
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update docs/config.md
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update frankenphp_with_watcher_test.go
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update testdata/files/.gitignore
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update watcher/watcher-c.h
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Update watcher/watcher.c
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* Fixes test and Dockerfile.
* Fixes Dockerfiles.
* Resets go versions.
* Replaces unsafe.pointer with uintptr_t
* Prevents worker channels from being destroyed on reload.
* Minimizes the public api by only passing a []string.
* Adds support for directory patterns and multiple '**' globs.
* Adjusts label.
* go fmt.
* go mod tidy.
* Fixes merge conflict.
* Refactoring and formatting.
* Cleans up unused vars and functions.
* Allows dirs with a dot.
* Makes test nicer.
* Add dir tests.
* Moves the watch directive inside the worker directive.
* Adds debug log on special events.
* Removes line about symlinks.
* Hints at multiple possible --watch flags.
* Adds ./**/*.php as default watch configuration.
* Changes error to a warning.
* Changes the default to './**/*.{php,yaml,yml,twig,env}' and supports the {bracket} pattern.
* Fixes linting.
* Fixes merge conflict and adjust values.
* Adjusts values.
---------
Co-authored-by: a.stecher <a.stecher@sportradar.com >
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2024-10-07 13:17:24 +02:00
Rob Landers
aa585f7da0
handle worker failures gracefully ( #1038 )
...
* handle failures gracefully
* fix super-subtle race condition
* address feedback: panic instead of fatal log and make vars into consts
* pass the frankenphp context to worker-ready function
* reset backoff and failures on normal restart
* update docs
* add test and fix race condition
* fail sometimes but do not be pathological about it
* Use title case
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* fix code style in php
* define lifecycle metrics
* ensure we update unregister the metrics and fix tests
* update caddy tests and fix typo
* update docs
* no need for this
---------
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2024-10-03 21:53:12 +02:00
Robert William Vesterman
1e20f65e26
fix: pthread include for FreeBSD ( #1058 )
...
Compilation would fail on FreeBSD due to a missing header file (``pthread.h``). This commit adds a ``#include`` for it.
2024-10-02 12:38:05 +02:00
Rob Landers
d532772355
fix: reset sapi response code ( #964 )
...
* fix: reset sapi response code
It turns out that the sapi response code is NOT reset between requests by the zend engine. This resets the code for cgi-based requests.
fixes : #960
* update response header test
* fix assertion
* appears to affect workers too
2024-08-11 22:34:50 +02:00
Rob Landers
fb23c64632
perf: cgi-mode 1700% improvement ( #933 )
...
* major perf
* clean up before thread returns
* fix lint
* clean up and refactor server-context initialization
* removing the request-startup memset
I'm electing to remove the memset at startup and keeping it in shutdown. Why? Security! Keeping around the request data after a request may result in a leak of important information in a core dump or something. By setting it to zero when we shutdown the request, we can ensure no information is left laying around
2024-07-26 09:22:08 +02:00
Kévin Dunglas
0500ebc191
perf: improve PHP thread management ( #898 )
2024-07-09 09:39:03 +02:00
Kévin Dunglas
8ff6cfdda8
refactor: prevent a useless allocation ( #895 )
...
* refactor: prevent a useless allocation
* cs
2024-06-28 16:46:34 +02:00