On 12/13/06, Roman Neuhauser <neuhauser@xxxxxxxxxx> wrote:
# maillist.kai@xxxxxxxxx / 2006-12-13 14:15:26 +0800: > I'm new here and looking PHP these days, howerver , I'm confused by how it > works, and here is some questions I have. > Is there any old bird wanna help me out? > > 1. I heard there is a zend engine inside PHP playing the role as a virtual > machine, and PHP excution have 2 step, first compile to opcode and then > excute the opcode, > so is that means the php are compiled only once per file? or still need to > recompile when another request issued to the server? also I heard about the > caching extention about php, is it talking about caching the opcode? is't > caching the opcode or excute results? how it shares between the requests? Both kinds of things exist, with different sharing strategies.
Can you tell it more detail, opcode caching cache the compiled opcode, so not any compile needed anymore if no source changed? what about results, what kind of methdology it's taking?
> 3. Take linux apache for example, if compiled as a apache module, and using > prefork threading model, for example, if I have 100 process, is that means I > have 100 copy of PHP library local data(I assume only one reentrant > excutable image) in each process? compare to a worker model, like 10 process > and 10 threads in each one process, should it make a difference that we only > have 10 copy of PHP library local data ? Practical concerns make your question moot: even if the basic distribution was all threadsafe, you're bound to hit a library that uses strtok(3) or strerror(3), or static variables. How much of the code you rely on is labelled by its authors as threadsafe?
So it is not a good idea to use worker and php module at the same time, but if no threadsafe problem , maybe my thinking is right? Btw, I thought strerror in libc were thread-safe.
-- How many Vietnam vets does it take to screw in a light bulb? You don't know, man. You don't KNOW. Cause you weren't THERE. http://bash.org/?255991