PDA

View Full Version : [PHP] Qualcuno sa spiegarmi bene l'architettura intorno all'engine Zend?


Matrixbob
05-01-2011, 20:58
Nel senso che noi tutti sappiamo come funziona a livello di programmazione un application server WAMP/LAMP, invece quello che mi riferisco io è il "cosa c'è sotto" ovvero il motore.


Quando Apache trova codice PHP fa intervenire Zend per interpretarlo, ma Zend cos'è quindi?
Una macchina virtuale scritta in C come quella la JVM che è scritta nello stesso Java?
Quindi l'interprete è a tutti gli effetti l'engine Zend?
Ma + nel dettaglio Zend cos'è? Un programma procedurale C compilato?
Cos'ha un parser che interpreta la linea di codice e manda in esecuzione un dispatcher a seconda della codifica della linea?
Insomma, qualcuno ne conosce bene e sa spiegare l'architettura?


Grazie infinite!

Matrixbob
06-01-2011, 16:18
Ad esempio un mito che mi cade è che pensavo le sessini PHP non utilizzassero i coockie e he ne fossero un'alternativa e che il PHP session id fosse trasmesso ove richiesto con specifica funzione, NON che fosse memorizzato come coockie sul mio disco ... forse è per questo che non ho mai trovato la funzione "disabilita coockie" come c'è per "disabilita JavaScript". :boh: :O

http://img831.imageshack.us/img831/9349/coo2.png

Addirittura Opera va + nello specifico ... saranno parametri suoi gli altri che in FF non compaiono?

http://img810.imageshack.us/img810/452/coo.png

Matrixbob
13-01-2011, 23:52
UP!

kyxzme
14-01-2011, 00:30
Nel senso che noi tutti sappiamo come funziona a livello di programmazione un application server WAMP/LAMP, invece quello che mi riferisco io è il "cosa c'è sotto" ovvero il motore.


Quando Apache trova codice PHP fa intervenire Zend per interpretarlo, ma Zend cos'è quindi?
Una macchina virtuale scritta in C come quella la JVM che è scritta nello stesso Java?
Quindi l'interprete è a tutti gli effetti l'engine Zend?
Ma + nel dettaglio Zend cos'è? Un programma procedurale C compilato?
Cos'ha un parser che interpreta la linea di codice e manda in esecuzione un dispatcher a seconda della codifica della linea?
Insomma, qualcuno ne conosce bene e sa spiegare l'architettura?


Grazie infinite!

PHP è scritto in C, quando Apache trova codice eseguibile da PHP non chiama direttamente l'interprete, nè noi abbiamo mai a che fare con l'interprete direttamente ma abbiamo a che fare con le estensioni SAPI che appreso il codice lo passano all'interprete, tutto ciò con cui noi possiamo avere contatto è solo estensione posta a dialogare con l'interprete (Command Line SAPI, Mod php5 SAPI etc).

PHP è composto da 5 elementi: dall'alto verso il basso (cioè allontanandoci sempre di più da noi abbiamo)
1) SAPI - Server API
2) PHP Core - Il responsabile delle risorse, che gestisce le estensioni, gli eventi che devono verificarsi in una richiesta ( RINIT MINIT MSHUTDOWN RSHUTDOWN) e l'interfacciamento con il sistema operativo
3) Lo Zend Engine che è l'interprete vero e proprio , colui che parsa il codice PHP e lo trasforma in bytecode per poi eseguirlo nella sua virtual machine in cui controlla l'esecuzione del codice, di ciò che ha bisogno per soddisfare la richiesta etc
4) le estensioni
5) il TSRM - Thread Safety Resource Manager, che sarebbe il componente che ingloba tutto in un sistema che permette attraverso una sola istanza di eseguire e soddisfare più richieste alla volta

http://www.gnu.org/software/bison/

kyxzme
14-01-2011, 00:31
Comunque se ti interessa il funzionamento di PHP e come creare estensioni ti consiglio questo:

http://www.amazon.co.uk/Extending-Embedding-PHP-Sara-Golemon/dp/067232704X/ref=sr_1_1?ie=UTF8&s=books&qid=1294961472&sr=8-1

Matrixbob
14-01-2011, 00:59
Comunque se ti interessa il funzionamento di PHP e come creare estensioni ti consiglio questo:

http://www.amazon.co.uk/Extending-Embedding-PHP-Sara-Golemon/dp/067232704X/ref=sr_1_1?ie=UTF8&s=books&qid=1294961472&sr=8-1

TNX!
Dove posso trovare invece il codice della funzione print e del costrutto echo? In modo da confrontarli?