Re: [RFC] Request lifecycle hooks for SAPIs with a worker mode

From: Date: Tue, 10 Nov 2026 11:12:51 +0000
Subject: Re: [RFC] Request lifecycle hooks for SAPIs with a worker mode
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-133052@lists.php.net to get a copy of this message
Hey Kevin, thanks for working on this. It would be really nice, from an extension perspective, to have an explicit way to detect the logical request boundaries in an explicit way. I had one question when looking at the FrankenPHP example at https://github.com/php/frankenphp/compare/main...experiment/php-request-boundary-hooks It seems that the lifecycle is actually starting with REND and finishing with RBEGIN? Is that intended, I can see why it is the way it is, it just feels odd. So for example: <?php $handler = static function () { echo "request handled"; }; while (frankenphp_handle_request($handler)) {} ?> The lifecycle of this code would look like: - RINIT (plus all the things before) - FrankenPHP would execute till the call to frankenphp_handle_request() - then REND (to "shutdown"/end the dummy bootstrap request) - wait for an actual HTTP request and then we enter the RBEGIN -> REND loop as long as requests are served to that worker - if that worker is about to shut down, frankenphp_handle_request() would return false, but also do another call to RBEGIN, just none to REND anymore before RSHUTDOWN Kind regards Florian On Mon, Nov 9, 2026 at 3:25 PM Kévin Dunglas <kevin@dunglas.fr> wrote: > > Hi internals, > > Following the recent pre-RFC discussion > (https://news-web.php.net/php.internals/132960), I would like to open > the discussion on the "Request lifecycle hooks for SAPIs with a worker > mode" RFC: > https://wiki.php.net/rfc/request_lifecycle_hooks > > As presented, this RFC proposes two optional module hooks, available > for extensions (no userland change), which are called between requests > served by a "worker" script. > > I crafted a patch adding the hooks and support PHP functions. It > implements the hooks in the built-in standard, session and filter > extensions: > https://github.com/dunglas/php-src/tree/request-boundary-hooks > > Here is also a patch showing how to use this new engine feature in > FrankenPHP: > https://github.com/php/frankenphp/compare/main...experiment/php-request-boundary-hooks > > Best, > -- > Kévin Dunglas > > https://dunglas.dev

« previous php.internals (#133052) next »