Skip to content

Commit

Permalink
Fix #46
Browse files Browse the repository at this point in the history
  This is the bare minimum required to make fibers work within the go
  runtime.
  • Loading branch information
krakjoe committed Nov 10, 2022
1 parent 3abda4f commit 82ef1e8
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions frankenphp.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ package frankenphp
//go:generate rm -rf C-Thread-Pool/.git C-Thread-Pool/.circleci C-Thread-Pool/docs C-Thread-Pool/tests

// #cgo CFLAGS: -Wall
// #cgo CFLAGS: -fsplit-stack
// #cgo CFLAGS: -I/usr/local/include/php -I/usr/local/include/php/Zend -I/usr/local/include/php/TSRM -I/usr/local/include/php/main
// #cgo LDFLAGS: -L/usr/local/lib -L/opt/homebrew/opt/libiconv/lib -L/usr/lib -lphp -lxml2 -lresolv -lsqlite3 -ldl -lm -lutil
// #cgo darwin LDFLAGS: -liconv
Expand Down
17 changes: 17 additions & 0 deletions frankenphp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -536,6 +536,23 @@ func testEarlyHints(t *testing.T, opts *testOptions) {
}, opts)
}

func TestFiberBasic_module(t *testing.T) { testFiberBasic(t, &testOptions{}) }
func TestFiberBasic_worker(t *testing.T) {
testFiberBasic(t, &testOptions{workerScript: "fiber-basic.php"})
}
func testFiberBasic(t *testing.T, opts *testOptions) {
runTest(t, func(handler func(http.ResponseWriter, *http.Request), _ *httptest.Server, i int) {
req := httptest.NewRequest("GET", fmt.Sprintf("http://example.com/fiber-basic.php?i=%d", i), nil)
w := httptest.NewRecorder()
handler(w, req)

resp := w.Result()
body, _ := io.ReadAll(resp.Body)

assert.Contains(t, string(body), "OK")
}, opts)
}

type streamResponseRecorder struct {
*httptest.ResponseRecorder
writeCallback func(buf []byte)
Expand Down
10 changes: 10 additions & 0 deletions testdata/fiber-basic.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php
require_once __DIR__.'/_executor.php';

return function(){
$fiber = new Fiber(function(){
echo "OK";
});
$fiber->start();
};

0 comments on commit 82ef1e8

Please sign in to comment.