Zend Engine: l'interprete del linguaggio

Zend Engine: l'interprete del linguaggio

PHP è un linguaggio interpretato, ovvero esiste un programma specifico, chiamato interprete, che fa da tramite tra il linguaggio PHP e il linguaggio macchina, e il cui compito è quello di eseguire "al volo" il codice sorgente istruzione per istruzione.

Anche se in tempi recenti sono nate alcune implementazioni come ad esempio HHVM per Facebook, l'interprete ufficiale di PHP è lo Zend Engine, arrivato alla terza versione con l'uscita di PHP 7.

La prima versione dell'interprete risale al 1999 con PHP 4, a cui fece seguito Zend Engine 2, rilasciato con l'uscita di PHP 5.

Attualmente il motore di PHP è Zend Engine 3, grazie al quale l'esecuzione degli script PHP è 2 volte più veloce e il consumo di memoria è migliorato del 50% rispetto a PHP 5.6.

Oltre ad essere il cuore di PHP, Il motore Zend svolge diversi compiti tra cui:

  • Analisi della sintassi, compilazione in memoria ed esecuzione degli script PHP.
  • Implementazione di tutte le strutture dati standard di PHP.
  • Interfacciamento con le estensioni di PHP per l'utilizzo di protocolli esterni come HTTP e FTP.
  • Fornire tutti i servizi standard, tra cui gestione della memoria e gestione delle risorse.

Come funziona l'interprete

Dove aver presentato l'interprete PHP, vediamo da vicino il suo funzionamento attraverso la seguente figura:

Come funziona l'inteprete PHP

Durante l'esecuzione di uno script PHP, il codice viene caricato in memoria e compilato generando i cosiddetti Zend Opcodes. Il termine opcodes è l'abbreviazione di operation codes e indica le istruzioni binarie di basso livello.

  • Lo script PHP viene caricato in memoria dall'interprete e compilato negli Zend Opcode.
  • Gli opcodes vengono eseguiti generando il codice HTML corrispondente.
  • Il codice HTML generato viene inviato al browser web.
  • Alla fine dell'esecuzione la memoria viene liberata.

La gestione della memoria di PHP è molto semplificata rispetto ad altri linguaggi, in quanto lo spazio di memoria allocato viene immediatamente liberato al termine dell'esecuzione dello script.

Guida successiva: Versioni di PHP