On 9 February 2015 02:16:53 GMT, "S.A.N" <ua.san.a...@gmail.com> wrote:
>2015-02-09 2:26 GMT+02:00 Rowan Collins <rowan.coll...@gmail.com>:
>> 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".
>>
>>
>> Regards,
>>
>> --
>> Rowan Collins
>> [IMSoP]
>>
>>
>> --
>> PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>
>Yes, option (B) is more like.
>
>Let me show in your PHP code, how the option that I like, we have the
>actual application work that way in the pecl-event module, we are
>satisfied, it is convenient and very fast for PHP.

Yes, I can see it working well for specialised uses - you can simply not use 
those aspects of the language that don't make sense. But for it to be a 
mainstream part of the language, it needs to play nicely with other parts of 
the language, and that's where I see it being a complex and painful change.

Regards,
-- 
Rowan Collins
[IMSoP]


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to