News Feed
Sections




News Archive
Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

Derick Rethans' Blog:
PHP's two-pass compiler
January 28, 2009 @ 12:06:34

While working on an issue with debugging a script of his via XDebug, Derick Rethans was reminded of something that is an integral part of the PHP language - its two phase compiler.

During the first pass, it will find out to which opcode it needs to jump in the jump instructions. However, the PHP engine (and Xdebug) expects a memory address to jump to while executing your script. In the second pass, the compiler will then go over the generated opcodes and calculate the memory address to jump to from the jumps to opcode numbers.

Because of the way that XDebug was handling the checks (with the user-defined error handler) and how the opcodes inside of PHP are handled, the user-defined handler happened in between the first and second phases and the latter run couldn't find the resources it was looking for, thus the crash.

0 comments voice your opinion now!
two phase compiler xdebux vld userdefined error handler opcode resource


blog comments powered by Disqus

Similar Posts

Pierre-Alain Joye's Blog: How to generate backtraces on windows without compiler

Edin Kadribasic's Blog: First PHP build using the new compiler

Raphael Stolt's Blog: Zend Framework coding standards on one page

PHPEverywhere: PDO beta revisited

Pierre-Alain Joye's Blog: htscanner, new release, ISP needs?


Community Events

Don't see your event here?
Let us know!


voicesoftheelephpant unittest community interview api laravel series laravel5 example php7 language library framework introduction extension release opinion podcast install xdebug

All content copyright, 2015 PHPDeveloper.org :: info@phpdeveloper.org - Powered by the Solar PHP Framework