don't wait for resetting in php 8.2

This commit is contained in:
henderkes
2026-03-14 20:18:24 +07:00
parent e9533b8f21
commit 7c28f3d452
3 changed files with 11 additions and 8 deletions

View File

@@ -777,7 +777,7 @@ func restartThreadsAndOpcacheReset(withRegularThreads bool) {
threadsToRestart := drainThreads(withRegularThreads)
// on 8.2 debian it segfaults, skip opcache reset
// on 8.2 opcache_reset() segfaults, skip it entirely
if Version().VersionID >= 80300 {
opcacheResetOnce = sync.Once{}
opcacheResetWg := sync.WaitGroup{}
@@ -787,7 +787,6 @@ func restartThreadsAndOpcacheReset(withRegularThreads bool) {
thread.state.WaitFor(state.OpcacheResettingDone)
})
}
opcacheResetWg.Wait()
}

View File

@@ -50,9 +50,11 @@ func (handler *regularThread) beforeScriptExecution() string {
return handler.waitForRequest()
case state.Restarting:
handler.state.Set(state.Yielding)
handler.state.WaitFor(state.OpcacheResetting)
scheduleOpcacheReset(handler.thread)
handler.state.Set(state.OpcacheResettingDone)
if Version().VersionID >= 80300 {
handler.state.WaitFor(state.OpcacheResetting)
scheduleOpcacheReset(handler.thread)
handler.state.Set(state.OpcacheResettingDone)
}
handler.state.WaitFor(state.Ready, state.ShuttingDown)
return handler.beforeScriptExecution()

View File

@@ -51,9 +51,11 @@ func (handler *workerThread) beforeScriptExecution() string {
handler.worker.onThreadShutdown(handler.thread.threadIndex)
}
handler.state.Set(state.Yielding)
handler.state.WaitFor(state.OpcacheResetting)
scheduleOpcacheReset(handler.thread)
handler.state.Set(state.OpcacheResettingDone)
if Version().VersionID >= 80300 {
handler.state.WaitFor(state.OpcacheResetting)
scheduleOpcacheReset(handler.thread)
handler.state.Set(state.OpcacheResettingDone)
}
handler.state.WaitFor(state.Ready, state.ShuttingDown)
return handler.beforeScriptExecution()
case state.Ready, state.TransitionComplete: