Re: How php works?

From: Date: Fri, 15 Dec 2006 09:32:01 +0000
Subject: Re: How php works?
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-245856@lists.php.net to get a copy of this message
On 12/15/06, Richard Lynch <ceo@l-i-e.com> wrote:
On Wed, December 13, 2006 12:15 am, Kai Xiang wrote: 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? There is a Zend Engine inside the guts of PHP, and it does compile to opcode and execute. You can buy or find "opcode cache" software that will cache the compiled opcode and run that on the next request. Note that the BIG win there is not the compilation, but the hard drive not getting hit to load in the PHP script.
Oh, that's interesting to know, is that from certain test of design goals? I suspect this for I thought the most time-consuming work in PHP should be compiling. Refer to the early descussion, because all the thread share the same opcode, so it could save memory usage at the same time, is that true? say if there is a lot of requests at the same time, that could be a lot of memories. is that the design goal? or why not just implement a PHP file cache.
2. Is there some alternative choise except zend engineen, why need a zend engine? for performance advantage or just easy for porting to different platform? The original PHP guts were a hand-crafted parser by Rasmus Lerdorf, who, and this is NOT meant to be pejorative, had no idea what he was doing :-) He didn't know that there were tools out there to write new computer languages, and didn't use them. So his parser was, well, kinda buggy, actually. Ze'ev and Andi gutted the system with a shiny new parser using the pro tools for homework, and ended up being Core PHP Developers by accident. :-) So, that became the Zend Engine, as Ze'ev and Andi's idea of a Good Time is not building PHP websites, but building cool tools to improve the guts of PHP, which is also why they started Zend ( http://zend.com) to sell high-end tools to high-end customers, like the Zend Cache.
:) PHP change it's gut to make it more fresh.
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 ? Yes, but if you don't use prefork, you have some serious thread safety Risks, particularly in the extensions, and most especially in any extensions that aren't getting heavy use already by people trying to push into the threaded environment... Stick with pre-fork unless your testing budget is 10 X your dev budget. I'm not sure if this is the right place to talk about this, anyway, if you know a better place, help me out :) This is probably about as on-topic a post as one can get, though much of the info is "out there" if you can sift through the junk to find it. -- Some people have a "gift" link here. Know what I want? I want you to buy a CD from some starving artist. http://cdbaby.com/browse/from/lynch Yeah, I get a buck. So?


« previous php.general (#245856) next »