On Fri, Oct 30, 2026, at 7:51 AM, Kévin Dunglas wrote:
> After an off-list discussion with Tim Düsterhus, I'm retracting some
> of the examples from my first email: http_get_last_response_headers(),
> the libxml errors, error_get_last() and strtok(). They don't depend on
> the incoming HTTP request, so a worker SAPI shouldn't reset them
> between "logical" requests. Like any other state shared in worker
> mode, userland can clear them when needed with the existing functions
> (http_clear_last_response_headers(), libxml_clear_errors(),
> error_clear_last()).
>
> The rule I'm proposing is narrower: reset only the state built from
> the incoming request or tied to its response. The session module and
> output_add_rewrite_var() still fall under it.
>
> The main point of the proposal stands: hooks for "logical" requests
> give extensions one abstraction that works with every SAPI that has a
> worker mode, instead of special-casing each one.
>
> FrankenPHP will follow the same rule in its next release.
>
> Tim suggested a short RFC. I'll write it soon.

Bottom post, please. :-)

I'm still a bit fuzzy on how this would interact with Scopes.  Specifically, I 
presume we would want the user-space definition of "request lifetime" and the 
engine-space definition of "request lifetime" to be in sync.  But as you note, 
Scopes as proposed don't have a clear and obvious The End that can correspond 
to firing the request end hook.  So what would that coordination look like?  
Some contrived code samples would probably help.

--Larry Garfield

Reply via email to