mirror of
https://github.com/php/frankenphp.git
synced 2026-03-24 00:52:11 +01:00
fix: prevent panic when restarting crashed worker (#49)
This commit is contained in:
9
testdata/die.php
vendored
Normal file
9
testdata/die.php
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
do {
|
||||
$ok = frankenphp_handle_request(function () use ($i): void {
|
||||
echo 'Hello, world';
|
||||
});
|
||||
|
||||
die('Hello');
|
||||
} while ($ok);
|
||||
@@ -74,6 +74,7 @@ func startWorkers(fileName string, nbWorkers int) error {
|
||||
|
||||
// TODO: make the max restart configurable
|
||||
if _, ok := workersRequestChans.Load(absFileName); ok {
|
||||
workersReadyWG.Add(1)
|
||||
l.Error("unexpected termination, restarting", zap.String("worker", absFileName))
|
||||
} else {
|
||||
break
|
||||
|
||||
@@ -41,6 +41,14 @@ func TestWorker(t *testing.T) {
|
||||
}, &testOptions{workerScript: "worker.php", nbWorkers: 1, nbParrallelRequests: 1})
|
||||
}
|
||||
|
||||
func TestWorkerDie(t *testing.T) {
|
||||
runTest(t, func(handler func(http.ResponseWriter, *http.Request), _ *httptest.Server, i int) {
|
||||
req := httptest.NewRequest("GET", "http://example.com/die.php", nil)
|
||||
w := httptest.NewRecorder()
|
||||
handler(w, req)
|
||||
}, &testOptions{workerScript: "die.php", nbWorkers: 1, nbParrallelRequests: 10})
|
||||
}
|
||||
|
||||
func ExampleServeHTTP_workers() {
|
||||
if err := frankenphp.Init(
|
||||
frankenphp.WithWorkers("worker1.php", 4),
|
||||
|
||||
Reference in New Issue
Block a user