Home News PHP NG, cos’è, da dove arriva e dove vuole andare
PHP NG, cos’è, da dove arriva e dove vuole andare PDF Stampa E-mail
Giovedì 26 Marzo 2015 15:00

PHP NG, cos’è, da dove arriva e dove vuole andare

Il vecchio mondo della programmazione è in subbuglio. Prima HipHop, poi Facebook con HHVM e Hack, a seguire Zephir con un codice PHP da compilare a C e infine HippyVM. Nomi diversi, a volte strani, che rappresentano però la volontà di alcuni sviluppatori di rinnovare alcuni dei linguaggi di programmazione più in voga, come PHP, che proprio in questo mare di novità vede infrangersi la nuova onda di PHP NG.

Per chi ancora non ne avesse sentito parlare, PHP NG è un nuovo ramo di sviluppo di PHP che, in realtà, non vedrà mai la luce del rilascio definitivo se non nella forma della nuova versione PHP 7, la major release di PHP, evoluzione, per l’appunto, di PHP NG.

Detto questo, bisogna subito contraddire chi pensa che PHP NG sia nato per poi cedere il passo a PHP 7. In realtà, le ragioni della nascita di PHP NG sono molto più nobili e vengono da lontano, da alcuni esperimenti i cui risultati non sono stati proprio quelli attesi.

In pratica, gli sviluppatori di Zend avevano tentato di introdurre nel noto framework un motore di compilazione JIT (Just In Time) ottenendo dei risultati nel mondo reale davvero pessimi, a causa della cattiva gestione dell’allocazione di memoria propria del linguaggio PHP.

Da qui, l’idea di mettere mano al core di PHP, creando PHP NG, per migliorare l’allocazione dati e ottenere così performance migliori sotto diversi punti di vista.

Il team di lavoro, quindi, avrebbe messo mano al tradizionale PHP per continuare a svolgere il suo intenso lavoro rivolto allo studio di un motore JIT, probabilmente basato su un’infrastruttura di tipo LLVM (Low Level Virtual Machine), da associare a Zend, in modo da integrare un supporto capace di compilare dinamicamente l’opcode di Zend in linguaggio macchina, con tempi di esecuzione molto più rapidi di quelli attuali.

La nascita di PHP NG, quindi, andrebbe ricercata nella volontà di migliorare le prestazioni non solo dell’engine Zend, ma di tutto il linguaggio.

Così, a parlare per la prima volta di PHP NG è stato il responsabile delle prestazioni e dell’ottimizzazione di Zend, Dmitry Stogov, che in un thread del newsgroup di PHP parla dei suoi esperimenti e del fatto che PHP NG rappresenta una riscrittura fondamentale del motore Zend, per consentire una migliore allocazione in memoria su diversi tipi dati di PHP.

PHP NG, prestazioni sì, ma a che prezzo?

Il ramo di sviluppo di PHP NG è dunque un’implementazione alla gestione della memoria di PHP. Secondo Stogov, infatti, l’esecuzione stessa di PHP in termini di tempi dipende fortemente dall’allocazione di memoria, impattando in modo negativo sulle performance dell’intero linguaggio.

Secondo i suoi test, condotti su una tipica installazione WordPress, con PHP NG si può giungere a un significativo miglioramento delle applicazioni PHP, tanto che è riuscito a raggiungere percentuali del 20 percento di richieste al secondo in più soddisfatte dal linguaggio di programmazione.

Ovviamente, non è detto che ci si possa aspettare questa portata di miglioramento delle performance su tutte le applicazioni PHP perché molto dipende anche dai tempi di attesa per il completamento delle operazioni di accesso ai database e alle cache dati.

Al di là di queste limitazioni, PHP NG mira, come già detto, al miglioramento delle prestazioni di PHP, ma lo fa con l’intelligenza di chi vorrebbe mantenere una retrocompatibilità totale, per agevolare gli sviluppatori e permettere loro l’esecuzione del codice PHP già scritto senza ulteriori modifiche.

Per quanto questa volontà pervada l’intero progetto, i cambiamenti richiesti in PHP NG sono tali che non è sempre detto che tale compatibilità possa essere garantita.

Ad esempio, al contrario di quanto ci si possa aspettare, uno dei problemi principali dell’uso di PHP NG si ha proprio sulla compatibilità con le estensioni PHP esistenti.

Infatti, chi pensa che le estensioni PHP dovrebbero funzionare comunque perché il lavoro su PHP NG è basato su Zend si sbaglia di grosso e durante i test molte estensioni sono risultate non compatibili a tal punto da indurre a dover svolgere un lavoro di riprogettazione (neanche poi così impegnativo, a onor del vero) per garantire il corretto funzionamento delle attuali estensioni PHP. Questi cambiamenti devono comunque essere svolti nel codice di tutte le estensioni PHP.

Ci si ritrova così l’incredibile vantaggio della velocità di esecuzione e l’opportunità di interagire con un motore JIT da un lato, ma con un problema di incompatibilità con il codice preesistente dall’altro.

Gli altri problemi del PHP NG

In realtà, la retrocompatibilità non è neanche l’unico vero dilemma di PHP NG.

A questo si aggiunge la decisione di mettere al bando una delle più popolari server API (SAPI) del mondo Web, ossia il mod_php, che sembra inutile in un mondo dove Apache e altri webserver possono lavorare meglio con FastCGI e altre SAPI più moderne già disponibili.

In realtà, in alcune circostanze, alcune applicazioni PHP offrono delle caratteristiche che funzionano solo se viene usato Apache mod_php.

Questo significa che il mancato supporto a mod_php potrebbe scoraggiare ulteriormente le compagnie hosting e gli utenti e metterli in guardi dall’aggiornare a una nuova versione di PHP come potrebbe essere PHP NG.

Questa situazione ricorda un po’ quella già accaduta nel 2011 con la decisione di rimuovere da PHP l’estensione MySQL, che, nonostante l’ira furibonda degli sviluppatori, è divenuta deprecata in PHP 5.5 e verrà rimossa nella prossima versione del linguaggio.

Infine, non bisogna dimenticare che c’è una lentezza di fondo del core team di sviluppo che potrebbe portare a un invecchiamento di PHP NG prima che sia realmente pronto per un suo debutto reale.

Il futuro di PHP NG

Da questa lentezza, forse deriva l’idea di trasformare PHP NG come base per il prossimo PHP 7. Questa opportunità è stata una trovata essenziale per cercare di mantenere a galla un progetto che in realtà offre dei risultati interessanti dal punto di vista delle prestazioni ed è stato anche il modo più logico affinché non andasse perduto molto del lavoro fino a ora svolto.

Con PHP NG che diventa PHP 7, quindi, accanto all’integrazione con un motore JIT, si potrebbe avere il supporto per la generazione di un AST (Abstract Syntax Tree), che già risulta disponibile per PHP NG sotto forma di patch, in modo che ci sia un intermediario per il processo di compilazione del codice. Inoltre, potrebbe arrivare anche un nuovo Web server standalone e multi-threading che possa rappresentare una valida alternativa performante ai tradizionali Nginx, Apache e via discorrendo.

L’evoluzione in PHP 7 di PHP NG potrebbe ancora portare un supporto per la gestione degli eventi, per l’esecuzione di task paralleli e per la programmazione asincrona.

Proprio su quest’ultimo punto relativo alla programmazione asincrona si nota come il futuro dell’accoppiata PHP 7 / PHP NG non sia esente da problematiche quali la concorrenza. La soluzione alternativa Facebook HHVM (HipHop Virtual Machine) che rappresenta la macchina virtuale open source progettata a Menlo Park per l’esecuzione di applicazioni scritte in Hack e PHP, gode già della programmazione asincrona e di tante altre caratteristiche come il type hinting, l’opportunità di usare HHVM come webserver senza avere la necessità di uno separato e le capacità multithread.

Queste caratteristiche mettono ancora di più in seria difficoltà PHP 7 / PHP NG, che comunque sta andando avanti con un supporto sempre più esteso alle estensioni ricompilate e alle SAPI.

Che ne sarà in futuro del PHP è forse troppo presto per dirlo e a tal proposito non mancano gli sviluppatori che vorrebbero vedere Facebook e Zend unire le proprie forze in nome del miglioramento del linguaggio di programmazione.

In un prossimo post, vedremo come installare PHP NG / PHP 7 su una delle tante configurazioni VPS offerte da VHosting Solution.

 

Vhosting“Questo articolo è offerto da VHosting SolutionVHosting Solution è l’azienda con un Data Center ridondato da 300 Gbps, localizzato in Germania, nel cuore dell’Europa, che fornisce in Italia servizi di hosting, domini, server virtuali VPS e server fisici dedicati. Ogni tipologia di servizio si declina in diverse soluzioni dedicate tanto ai professionisti, quanto alle piccole e medie imprese e alle aziende enterprise. Con un uptime controllabile in totale trasparenza direttamente online, attraverso il servizio Hyperspin, VHosting Solution unisce l’affidabilità tecnica e l’assenza di overselling all’economicità delle proposte commerciali, a cui si aggiunge un’assistenza tecnica professionale erogata 24 ore su 24 via Skype e ticket.” 

 

Tutorial

Vuoi approfondire degli argomenti specifici? Segui i miei tutorial, per dubbi o domande contattami.

Vai ai tutorial

Flickr

Guarda le mie foto su Flickr. Hai bisogno di foto particolari? Vuoi imparare a fotografare? Contattami
flickr_logo

Servizi Online

Vuoi predisporre il tuo sito web personalizzato? Hai bisogno di aiuto o consulenza?

Acquista i servizi online

Contattami

Per approfondimenti o informazioni su corsi di formazione o lavori contattami.

Richiedi uno scambio link con il mio sito.