Alliballibaba
fd40e62cb8
cleanup.
2025-10-26 21:25:19 +01:00
Alliballibaba
d54f736db7
simplifications
2025-10-26 20:52:19 +01:00
Alliballibaba
694b6188c0
Formatting.
2025-10-26 20:39:31 +01:00
Alliballibaba
3f63a4d137
Combines frankenphp_handle_task() and frankenphp_handle_request().
2025-10-26 20:21:19 +01:00
Alliballibaba
8144a06ebb
clang-format.
2025-10-11 22:55:31 +02:00
Alliballibaba
8a5d489c85
Returns error messages directly to PHP.
2025-10-11 22:53:44 +02:00
Alliballibaba
117b415e8b
Merge branch 'main' into feat/task-threads
2025-10-11 22:37:20 +02:00
Alliballibaba
05bf065a1b
Uses goValue and phpValue for task dispatching.
2025-10-11 22:13:03 +02:00
Alliballibaba
58d1761fe8
Simplifies by removing args.
2025-10-11 21:11:14 +02:00
SpencerMalone
1f6f768c97
fix: release but don't free CLI streams when executing cli scripts ( #1906 )
...
* Bring upstream commit 0a4a55fd44 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
Alliballibaba
0dff2a2790
Adjusts naming.
2025-10-07 21:04:32 +02:00
Alliballibaba
99bb21f646
Allows setting args with task-workers.
2025-10-05 11:33:19 +02:00
Alliballibaba
9c36ed4624
Merge branch 'main' into feat/task-threads
2025-09-20 22:28:10 +02:00
Alliballibaba
f5e6a045b9
Fixes small issues.
2025-09-18 22:28:54 +02:00
Alliballibaba
7982b3af59
Adds max queue len and more tests.
2025-09-18 21:50:01 +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
Alliballibaba
7438edd676
Adds direct dispatching test.
2025-09-17 22:39:59 +02:00
Alliballibaba
9c4cf7e2d8
Throws on task handling failure.
2025-09-17 22:10:39 +02:00
Alliballibaba
6e79380ddc
formatting
2025-09-16 18:25:07 +02:00
Alliballibaba
a102da8171
Adds tests and optimizations.
2025-09-16 18:24:33 +02:00
Alliballibaba
8ad2351abc
FOrmatting.
2025-09-14 23:46:53 +02:00
Alliballibaba
abdb279bd3
Initial testing.
2025-09-14 23:45:40 +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