On 09/02/2015 00:02, S.A.N wrote:
You're right, but there is no threading issues.
One worker synchronously execute requests, but may run parallel many workers.
I'm not sure what you mean by this. I can see 3 ways of handling
incoming web requests, as it affects PHP's threading:
A) The current "shared nothing" model: the web server may have multiple
processes or threads, but each requested is executed in a completely
separate global scope of PHP.
B) Each process or thread in the web server spawns an instance of the
application; the application has a global state within that instance,
and startup and shutdown code; the instance is sent multiple requests,
but has no way to know if it is getting all the requests, half the
requests, or one hundredth of the requests.
C) The web server executes the application once, which sets up its
global state, and then spawns an internal threading model; each request
is sent to a worker thread within PHP, which has to synchronise with
other threads in order to access any aspect of global state.
I guess you are suggesting option (B), which is what I was referring to
when I said that global state would be "arbitrarily shared" - if
handling a particular request caused any global state to be changed,
such as registering an error handler, it could affect anything from 0 to
100% of subsequent requests, depending on how the web server is configured.
The code therefore needs to avoid relying on any such global state at
all, which basically restricts you to a subset of the current language.
For it to become the default way of running PHP, huge changes would be
needed to adapt code to this new model.
The reason I mentioned threading is that under option (C), migration
becomes a bit easier in some ways: you can move some things which are
currently global state into an explicitly per-thread state, allowing old
behaviour to be emulated; and you can leave other things in synchronized
global state, like ini settings, solving the problem of "50% of my
threads have a different error handler registered".