A technical publication about PHP

Understanding PHP below the abstraction.

A technical publication about PHP internals, performance, architecture, and production behavior — measurements over assumptions, trade-offs over rules.

opcache.opt_debug_level=0x20000PHP 8.5
readPlain:0000 CV0($o) = RECV 10001 T1 = FETCH_OBJ_R CV0($o) string("v")0002 RETURN T1readBacked:0000 CV0($o) = RECV 10001 T1 = FETCH_OBJ_R CV0($o) string("v")0002 RETURN T1readVirtual:0000 CV0($o) = RECV 10001 T1 = FETCH_OBJ_R CV0($o) string("v")0002 RETURN T1
A property hook emits the same opcode as a plain property.Read the measurement

Latest posts

All posts

Internals8 min read

What happens when PHP runs your code

A request walks from the SAPI to the Zend VM — lexing, compilation to opcodes, the OPcache lookup that skips both, and execution.

Five subjects

Every post belongs to one of them. Each subject has its own archive, newest first.

Series

Written to be read in order.

Each series builds one argument across several posts. Start at part one; every part links to the next.

Read in order

From the archive

All posts

Arrow keys to move, Enter to open.