Velocizzare l'esecuzione di script PHP con Zend Server CE

Quando si sviluppa in PHP si ha la necessità di disporre di un ambiente di testing completo, facilmente configurabile ed affidabile.
Velocizzare l'esecuzione di script PHP con Zend Server CE

Quando si sviluppa in PHP si ha la necessità di disporre di un ambiente di testing completo, facilmente configurabile ed affidabile. Sia che le proprie competenze siano piuttosto evolute, sia che ci si voglia limitare all’installazione di uno dei tanti prodotti opensource realizzati in PHP, l’aver a disposizione un web server locale in grado di eseguire in modo efficiente tutti gli script che compongo le applicazioni sulle quali si desidera operare è un’esigenza a dir poco fondamentale.

Zend Server è un “web application server” che consente di eseguire e gestire applicazioni web realizzate in PHP offrendo un elevato livello di affidabilità, performance e sicurezza. Il prodotto è compatibile con Windows, Linux ed IBM i. Per quanto riguarda la piattaforma Microsoft, Zend Server può essere installato su Windows XP (SP2 o SP3), Windows Vista (fatta eccezione per la “Starter Edition“), Windows Server 2003, Windows Server 2008 e Windows 7.

Per quanto concerne Linux, Zend Server viene distribuito nei pacchetti RPM per Red Hat Enterprise Linux 5.x, CentOS 5.x, OEL 5.x e Fedora 11 (o versioni successive), Suse Linux Enterprise Server 10.x 1 e 11.x, OpenSUSE 11.x; per mezzo di pacchetti DEB nel caso di Debian GNU/Linux 5.x, Ubuntu Linux 8.04 (e versioni seguenti); in formato “tarball“.

Zend è ormai divenuta sinonimo di PHP. Zeev Suraski e Andi Gutmans, fondatori dell’israeliana Zend Technologies, si sono interessati a PHP sin dal 1997 quando crearono una nuova implentazione integrata poi nello “Zend Engine”, motore opensource che si occupa di compilare ed eseguire script PHP. Zend Server 5.0 è un prodotto che raccoglie gli sforzi dei tecnici della società per mettere a disposizione un sistema in grado di allestire una configurazione server sicura sia per l’utilizzo in ambienti di testing che in produzione intendendo, in questo caso, l’impiego su macchine che debbono gestire traffici dati elevati ed elaborare pagine PHP in modo performante ma allo stesso tempo affidabile.

La proposta di Zend è particolarmente apprezzabile perché consente di sgravare l’amministratore dalla necessità di installare e riconfigurare manualmente tutti i componenti software utilizzati nella propria realtà aziendale per il corretto funzionamento di applicazioni sviluppate in PHP. Zend Server, infatti, si propone come un prodotto già configurato per ciò che riguarda le impostazioni di base ma liberamente personalizzabile secondo le esigenze dell’utente. Il “web application server” di Zend mette a disposizione una comoda interfaccia, accessibile mediante il browser, che raccoglie tutte le informazioni relative alla configurazione dei vari componenti.
Zend Server supporta l’ultima versione di PHP e di decine di estensioni: quando uno o più applicazioni web necessitano di utilizzare una specifica estensione, non ricompresa nel “core” dell’interprete, è possibile abilitare molto comodamente da un’interfaccia web anziché metter mano al file php.ini (comunque modificabile anche in modalità manuale).

Grandi vantaggi si hanno anche in ambiente Windows dove Zend Server permette di eseguire qualsiasi script PHP senza tentennamenti. In passato, far convivere IIS (Internet Information Services), il web server di Microsoft, e PHP era un’impresa non semplice. Per guadagnare in termini di performance si perdeva inesorabilmente in stabilità, o viceversa.
Da tempo lo scenario è profondamente cambiato con Zend che ha avviato una stretta collaborazione con Microsoft per migliorare le abilità di IIS nella gestione di file PHP. I risultati più tangibili sono nelle ultime versioni di IIS: la 7.0, integrata in Windows Server 2008 ed installabile in Windows Vista (Home Premium, Business, Enterprise ed Ultimate) e la 7.5, integrata in Windows Server 2008 R2 ed installabile su Windows 7 (ved. queste pagine).
Microsoft stessa ha lanciato la sua “Web Platform“, prodotto simile a Zend Server, che abbiamo presentato in queste pagine e che è di recente giunta alla terza versione (il download è effettuabile da qui).

Zend Server viene distribuito in due “vesti”: la prima è a pagamento mentre la seconda è completamente gratuita (Zend Server Community Edition).
In questa pagina sono chiarite, in forma tabellare, le principali differenze tra Zend Server e Zend Server Community Edition.
Rispetto alla “Community Edition” (CE), la versione a pagamento di Zend Server offre un supporto 24 ore su 24 da parte dei tecnici di Zend, consente l’aggiornamento con un clic di tutti i componenti del pacchetto ed è particolarmente indicata per le applicazioni “business-critical“. La release più completa, inoltre, mette a disposizione dello sviluppatore così come dell’amministratore, una serie di strumenti per il monitoraggio delle applicazioni PHP, l’invio di messaggi d’allerta in caso di problemi ed alcuni moduli diagnostici.
La funzionalità “code tracing“, poi, offre gli strumenti per risalire alla causa di eventuali problematiche durante l’esecuzione di script PHP. Individuare il motivo di un comportamento anomalo di un’applicazione PHP può essere particolarmente difficile soprattutto quando ci si trova ad operare in un ambiente di produzione e quando il codice è complesso. Il meccanismo di “code tracing” integrato in Zend Server può essere considerato ad una sorta di “scatola nera” che offre informazioni circa bug delle applicazioni e “colli di bottiglia” che ne rallentano l’esecuzione.
Il pacchetto più completo di Zend Server, rispetto alla versione CE, mette nelle mani dell’utente anche “job queue“, un meccanismo che si prefigge come obiettivo quello di sgravare il peso sul server web determinato da script PHP che tardano molto ad essere eseguiti. La generazione di resoconti particolarmente lunghi, la pulizia dei database effettuata da una pagina web, il processo di vaste moli di dati, l’elaborazione di feed RSS provenienti da server “lenti” sono esempi di operazioni che possono essere effettuate in modalità “asincrona”.
Tutte queste funzionalità, unite al meccanismo di “page caching” consentono di ridurre drasticamente il carico di lavoro sul server ottenendo enormi benefici in termini prestazionali (leggasi, pagine HTML – frutto dell’elaborazione effettuata lato server – che vengono trasmesse ai client connessi in maniera molto rapida).
Nel prossimo articolo presenteremo le funzionalità aggiuntive offerte da Zend Server. Per il momento, concentriamoci sulla versione CE.

Installazione, primo avvio e pannello di amministrazione

Con lo scopo di mostrare i benefici derivanti dall’azione di Zend Server CE abbiamo volutamente installato il pacchetto su un sistema operativo ormai piuttosto datato ovvero Windows XP SP3.
Sappiate che per evitare di “pasticciare” sul sistema operativo installato sulla propria macchina, potrebbe essere ragionevole (specie se si utilizza un personal computer dotato di un buon quantitativo di memoria RAM) orientarsi su una qualche soluzione per la virtualizzazione (vanno benissimo software gratuiti quali Oracle VirtualBox e Vmware Player). Nel nostro caso siamo ricorsi a Vmware Player.
Come già evidenziato, il vantaggio di questa soluzione deriva dal fatto che è possibile allestire un ambiente di sviluppo e di testing di una o più applicazioni completamente separato dal funzionamento del sistema “host”.

Qualora l’approccio illustrato vi fosse congeniale, dopo aver installato il software per la virtualizzazione, si dovrà creare una nuova macchina virtuale ed avviarvi l’installazione del sistema operativo (noi abbiamo installato Windows XP, aggiornato al Service Pack 3).

.

Basterà quindi spuntare la casella Servizio web (i componenti File comuni e Snap-in Internet Information Services verranno automaticamente selezionati):

Si tenga presente che il primo link consente di scaricare la versione di Zend Server CE che integra PHP 5.2 (giunto ormai alla fine del supporto ufficiale) mentre il secondo quella che offre PHP 5.3.

” (Personalizzata) così da controllare i componenti che verranno caricati ed abilitati sul sistema.

Il componente Optimizer+, presente anche nella versione CE di Zend Server, consente di sveltire notevolmente le applicazioni PHP grazie ad un meccanismo di caching sul bytecode degli script. L’obiettivo consiste nell’evitare la rielaborazione e la compilazione del codice sorgente ad ogni richiesta proveniente da ciascun sistema client. Per migliorare ulteriormente le performance, il codice oggetto dell’attività di caching è conservato nella memoria condivisa ed eseguito direttamente da essa minimizzando così gli accessi in lettura da memorie più lente quali sono i dischi fissi.

I passi successivi consistono nel definire il server web che eseguirà gli script PHP (nel nostro caso Microsoft IIS):

).

Dopo aver accettato le condizione del contratto di licenza d’uso e cliccato su Next, si dovrà impostare una password per la protezione dell’interfaccia web di Zend Server CE, registrarsi opzionalmente alla newsletter di Zend e cliccare su Finish.

Dopo pochi istanti, nel browser apparirà la finestra di amministrazione di Zend Server. Da qui è possibile verificare lo stato dei vari componenti del pacchetto, modificare l’impostazione delle direttive PHP, abilitare o disattivare estensioni con un semplice clic del mouse. Dal medesimo pannello di controllo, si può consultare i log degli errori PHP ed invocare la ben nota funzione phpinfo().

Sul sito di Zend, dopo aver completo l’installazione del prodotto è sempre bene verificare la disponibilità di eventuali “hotfix“, aggiornamenti che solitamente risolvono problematiche molto importanti (al momento della stesura dell’articolo, Zend sta distribuendo un “hotfix” che permette di risolvere una pericolosa vulnerabilità di sicurezza implementando la modifica applicata nelle versioni 5.2.17 e 5.3.5 di PHP).

Nel caso in cui Zend Server, all’apertura del pannello di amministrazione, dovesse mostrare il messaggio d’errore “An internal application error has occurred. If this problem persists, go to the Zend Support Center at: http://www.zend.com/support-center“, suggeriamo di creare un nuovo account dotato di diritti amministrativi (dal Pannello di controllo di Windows), aprire IIS, fare clic con il tasto destro sul sottosito ZendServer, scegliere Proprietà, la scheda Protezione directory, cliccare sul pulsante Modifica quindi disattivare la casella Accesso anonimo e spuntare Autenticazione integrata di Windows.

Adesso si dovrebbe poter accedere senza problemi al pannello di amministrazione di Zend Server CE digitando username e password dell’account utente appena aggiunto.
Gli utenti più esperti possono personalizzare i diritti d’accesso alla cartella \Programmi\Zend\ZendServer\GUI\application\data relativi ai vari account utente.

Supponiamo compaia invece l’errore che segue:
* The FastCGI process exited unexpectedly
* Error Number: -2 (0xfffffffe).
* Error Description: Unknown Error

Nel caso di Windows XP si dovrà assegnare i diritti in scrittura all’account IWAM_nomemacchina per la cartella riportata nel registro degli eventi (Pannello di controllo, Strumenti di amministrazione, Visualizzatore eventi) di Windows (in questo caso, C:\WINDOWS\TEMP):

Qualora aveste qualche dubbio o domande da porre, potete inviare un commento a quest’articolo oppure fare riferimento ai forum di Zend.

Ti consigliamo anche

Link copiato negli appunti