Commit Graph

48 Commits

Author SHA1 Message Date
Kévin Dunglas
a16076e082 perf: prevent useless logger allocs 2024-08-27 11:03:01 +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
Kévin Dunglas
4537f27f67 fix: prevent crash when worker terminates after a file upload 2024-06-08 13:36:32 +02:00
Rob Landers
e127cf5e1c update test (#688)
This makes the file size 6mb-ish, more than the 2mb batching that PHP does. I verified this fails on 0e163a0 (main prior to #686).
2024-03-24 16:28:15 +01:00
Kévin Dunglas
07a74e5c5a perf: reduce allocs when creating $_SERVER (#540)
* perf: reduce allocs when creating $_SERVER

* improve

* refactor: prevent C allocs when populating $_SERVER

* cs

* remove append()

* simplify

* wip

* cleanup

* add cache

* cleanup otter init

* some fixes

* cleanup

* test with a leak

* remove const?

* add const

* wip

* wip

* allocate dynamic variables in Go memory

* cleanup

* typo

* bump otter

* chore: bump deps
2024-03-12 18:31:30 +01:00
Kévin Dunglas
d1a6e38438 chore: reset stats in benchmarks 2024-02-12 14:07:11 +01:00
Kévin Dunglas
6dee113a01 perf: add $_SERVER creation benchmark 2024-02-01 11:40:36 +01:00
Kévin Dunglas
fe7e9e7c79 fix: crash when using apache_request_headers() (#536)
* fix: potential crash when using apache_request_headers()

* refactor: better apache_request_headers
2024-02-01 10:00:11 +01:00
Kévin Dunglas
5a8e5f9518 feat: add apache_response_headers() function (#530) 2024-01-31 12:34:30 +01:00
Kévin Dunglas
49baf02035 feat: add go_apache_request_headers() 2024-01-23 23:14:24 +01:00
Kévin Dunglas
aa1d968dcf refactor: faster $_SERVER variables creation 2023-11-16 14:40:52 +01:00
Kévin Dunglas
12791636ee chore: add an echo server benchmark 2023-11-10 17:10:16 +01:00
Kévin Dunglas
c615fe0087 feat: add experimental CLI support (#239)
* feat: add CLI support

* updated

* debug

* fix tests

* Caddy php-cli command

* use thread

* $_SERVER and input streams support

* Update frankenphp.c

Co-authored-by: Francis Lavoie <lavofr@gmail.com>

---------

Co-authored-by: Francis Lavoie <lavofr@gmail.com>
2023-10-09 14:38:15 +02:00
Kévin Dunglas
69416cc0d6 test: prove that Fibers work if not calling Go 2023-09-28 19:04:57 +02:00
Kévin Dunglas
48908f599d fix: ensure that SERVER_PORT is always defined 2023-09-17 13:20:16 +02:00
Kévin Dunglas
fb63099a88 feat: allow passing env vars to workers (#210) 2023-09-15 12:59:43 +02:00
Kévin Dunglas
ab0783519e perf: reduce the number of calls to cgo to set the headers 2023-08-18 19:20:32 +02:00
Kévin Dunglas
234873a35a test: add a test for large requests 2023-08-16 11:12:29 +02:00
Kévin Dunglas
df976c1708 fix: race condition on shutdown 2023-08-06 17:37:52 +02:00
Kévin Dunglas
e0cf262224 test: fix and refactor some flaky tests (#165)
* test: fix and refactor some flaky tests

* better fix for flush.php

* simpler DHA config
2023-07-10 18:46:04 +02:00
Kévin Dunglas
35f2a4a852 ci: compile and run tests using setup-php (#157)
* ci: run tests without container

* try to use the embed SAPI

* fix build

* debug

* ctd

* cleanup

* use dev ini file

* disable xdebug

* errors

* fix

* phpinfo

* disable output_buffering

* enable debug symbols

* debug on linux

* debug

* fix config

* sudo

* better extension support

* enable opcache

* cleanup

* cleanup
2023-07-04 14:45:31 +02:00
Kévin Dunglas
11b1904a3d ci: fix skip flaky tests (#156)
* ci: fix skip flaky test

* flaky test
2023-06-26 22:20:09 +02:00
Kévin Dunglas
75cd310292 feat: add support for PHP timeouts on Linux (#128) 2023-03-05 15:47:20 +01:00
Kévin Dunglas
878a30d92f fix: ensure there is always a free thread for non-worker scripts (#105) 2022-11-14 22:45:51 +01:00
Kévin Dunglas
6a6dda5ed9 feat: expose PHP version (#102) 2022-11-12 14:48:10 +01:00
Jockos
f0b2eb7445 feat: improve of performance of PHP variables registration (#94)
* feat: enhance php register variables

* apply comments

* fix errors

* improve benchmark

* remove debug statement

* use defer

* don't use defer in a loop

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2022-11-10 14:03:50 +01:00
Rob Landers
3abda4fbb6 feat: handle aborted connection (#95)
* Handle aborted connection

* Handle when writing as well

* return bytes written

* optimize return

* remove goroutine

* fix style

* Add tests

* add missing newline
2022-11-09 15:09:45 +01:00
Kévin Dunglas
8e136d0d25 feat: implement flush() (#90)
* feat: implement flush()

* add tests
2022-11-09 00:56:00 +01:00
Kévin Dunglas
0a30dd1cb9 tests: improve TestFinishRequest (#97) 2022-11-09 00:53:34 +01:00
Rob Landers
9ef3bd7c47 feat: add fastcgi_finish_request() support (#69)
* Add function to ext

* buggy af, but kinda working

* Get worker and regular mode working

* fix formatting

* add eol

* add eol

* 🤦

* properly generate file

* use sync.Once
2022-11-03 08:36:47 +01:00
Dylan Blokhuis
18940108d1 feat: add support for $_SERVER['PHP_SELF'] (#71)
* PHP_SELF

* remove accidental formatting

* test: add test for PHP_SELF

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2022-10-28 17:25:02 +02:00
Kévin Dunglas
b719e1cbea docs: improve docs of the Go module (#25) 2022-10-15 11:54:42 +02:00
Kévin Dunglas
5af6b10d1f feat: add support for 103 Early Hints (#12) 2022-10-11 17:40:12 +02:00
Kévin Dunglas
3712d0d69b test: add tests for exception handling (#11) 2022-10-11 10:54:30 +02:00
Kévin Dunglas
4c0dd41327 feat: improve PHP logger 2022-10-08 13:05:18 +02:00
Kévin Dunglas
0b8e322375 fix: preserve autoloading in worker mode 2022-10-06 15:25:58 +02:00
Kévin Dunglas
4a87ad3609 chore: add tests regarding persistent objects 2022-10-05 15:44:02 +02:00
Kévin Dunglas
d61c96a4c3 feat: use Zap for logging 2022-10-04 17:42:45 +02:00
Kévin Dunglas
796476d537 feat: use threads instead of GoRoutines (#6)
* feat: use threads instead of GoRoutines

* many improvements

* fix some bugs
2022-10-04 14:41:19 +02:00
Kévin Dunglas
84273ec395 fix: fix thread safety issues (#5)
* fix: fix thread safety issues

* some improvements

* wip

* tiny improvements
2022-06-03 17:18:07 +02:00
Kévin Dunglas
a3ba57f021 test: ensure memory safety when handling parallel requests (#3) 2022-05-23 11:57:30 +02:00
Kévin Dunglas
2b3475ed9d docs: add examples 2022-05-20 09:42:30 +02:00
Kévin Dunglas
8c87075db8 docs: add an exemple 2022-05-19 17:42:12 +02:00
Kévin Dunglas
09de805aaa fix: memory leaks and refactor worker code (#2) 2022-05-18 21:19:07 +02:00
Kévin Dunglas
7d81fa51fe feat: add a woker mode (#1)
* refactor: better memory management

* wip

* tmp

* introduce a go-like api

* upgraded to PHP 8.2

* Fix thread safety issues

* fix tests

* wip

* refactor worker

* worker prototype

* fix populate env

* session

* improve tests

* fix Caddy tests

* refactor
2022-05-18 11:52:24 +02:00
Kévin Dunglas
f037ba937a feat: better public API 2021-11-01 15:38:12 +01:00
Kévin Dunglas
290e9e1114 feat: Caddy module 2021-11-01 00:18:30 +01:00
Kévin Dunglas
a2607e6be7 initial commit 2021-09-24 18:52:20 +02:00