Skip to main content

PHP & WinCache: come visualizzare statistiche e informazioni d’uso

Se avete installato WinCache sul vostro web server (magari grazie alla nostra guida) e volete dare un’occhiata a quello che succede dietro le quinte vi consigliamo di installare questo comodo script che vi consentirà di visualizzare, attraverso le API dell’estensione, una serie di informazioni relative ai vari aspetti delle sue molteplici funzionalità.

Lo script non è farina del nostro sacco, è infatti presente nel pacchetto ufficiale dell’estensione (potete controllare se lo avete già sul vostro sistema consultando questa pagina) ma tende a non essere molto conosciuto e, di conseguenza, poco utilizzato. Un vero peccato, considerando la mole di informazioni utili che consente di ottenere!

Ecco come si presenta:

WinCache Control Script

Niente male, vero?

IMPORTANTE: Se il vostro web server supporta la Basic Authentication lo script è configurato per richiedere un Nome utente e una Password. Le credenziali predefinite sono wincache / wincache e possono essere cambiate modificando le prime linee di codice PHP presente all’interno:

Per disabilitare del tutto l’autenticazione e la richiesta di credenziali è sufficiente impostare la costante USE_AUTHENTICATION a 0.

 

PHP: Guida all’installazione di WinCache su IIS

Il principale collo di bottiglia della maggior parte dei software basati su PHP è quasi sempre legato all’utilizzo della memoria da parte dell’interprete dei comandi. Nel caso di siti poco frequentati questo può essere un problema trascurabile, ma quando un blog in WordPress o un sito commerciale in Joomla comincia a diventare popolare i nodi cominciano a venire al pettine: pagine che caricano sempre più lentamente, request che si accavallano e un senso generalizzato di lentezza che verrà puntualmente confermato da strumenti di monitor come Yslow (se ancora non lo utilizzate, correte a installarlo!), Analytics etc.

Per migliorare le sorti di un sito in PHP molto trafficato che gira sotto IIS è possibile installare una delle estensioni gratuite di cache attualmente a disposizione: in questo articolo parleremo del sistema di cache proprietario messo a punto dalla Microsoft e chiamato WinCache, installabile gratuitamente e incluso nel pacchetto base delle versioni di PHP per Windows dalla 5.2 in poi. Questa estensione garantisce un notevole incremento prestazionale grazie a una cache a 5 livelli:

  • OPCode Cache: Caching degli script compilati a livello di bytecode, per evitare che il sistema processi più volte lo stesso identico script.
  • File Cache: Caching dei file php veri e propri, risparmiando al sistema numerosi accessi al disco per leggere più volte gli stessi identici file.
  • Resolve File Path Cache: Caching dei path assoluti degli script, in molti casi costruiti grazie a funzioni di risoluzione ripetute decine di volte nel corso del codice. Il sistema memorizza il mapping tra path relativi e assoluti evitando così di eseguire le operazioni di risoluzione.
  • User Cache: Caching degli oggetti e variabili create a livello di singolo utente, per evitare di dover ricreare le stesse cose di processo in processo.
  • Session Cache: Un vero e proprio session manager che consente di memorizzare le informazioni di sessione dell’utente evitando le frequenti operazioni sul file-system tipicamente richieste dal sistema di sessioni normalmente utilizzato da PHP (la classica cartella /sessiondata/), velocizzando inoltre il recupero dei dati di sessione.

Installare WinCache è estremamente semplice. Per prima cosa occorre assicurarsi che il file dll relativo all’estensione sia incluso nell’installazione PHP presente sul nostro sistema. In altre parole, il file php_wincache.dll dev’essere presente nella sottocartella /ext/ contenuta nella directory di installazione di PHP. Nel caso in cui non ci fosse è possibile scaricare una versione aggiornata della libreria dal sito ufficiale di WinCache (assicurandovi di selezionare il file compatibile con la vostra versione di PHP) e copiarla manualmente nella cartella suddetta.

Una volta fatto questo occorre abilitare l’estensione aggiungendo le seguenti due righe al proprio file php.ini, normalmente presente nella directory di installazione di PHP oppure nella cartella di installazione di Windows.

IMPORTANTE: Prima di aggiungere queste righe è consigliabile accertarsi che l’estensione non sia già abilitata effettuando una rapida ricerca di “php_wincache.dll” all’interno del file.

Se utilizzate PHP Manager per IIS (cosa altamente consigliabile) potete anche installare l’estensione anche attraverso la GUI fornita da questo ottimo programma.

Se non utilizzate PHP Manager e/o non avete idea di dove si trovi il vostro php.ini potete rintracciarlo eseguendo il comando phpinfo() sul vostro server (se non sapete cosa significa cliccate qui per ottenere uno script da caricare ed eseguire) e, una volta fatto, dare un’occhiata al parametro Loaded Configuration File:

Loaded Configuration File

Il comando phpinfo() può essere utilizzato anche per verificare che l’estensione WinCache sia stato installata correttamente. In caso affermativo troverete infatti una sezione fatta più o meno in questo modo:

Wincache configuration in PHPInfoCon tutta probabilità, come nell’immagine di cui sopra, il sistema vi informerà che le cache sono disabilitate. La cosa è del tutto normale: l’estensione è presente ed è stata correttamente installata, ma non è ancora attiva.

Per attivarla è necessario aggiungere al file php.ini una serie di parametri di configurazione nel seguente modo:

I parametri sopra elencati sono grosso modo adeguati per un server di produzione: per esigenze specifiche si consiglia di consultare la documentazione di riferimento di WinCache, che contiene una spiegazione dettagliata di ciascun parametro e le indicazioni di base su come impostare l’estensione nel modo adeguato.

Se si desidera abilitare anche la Session Cache e utilizzare WinCache come session handler è inoltre necessario modificare il seguente parametro, sempre nel php.ini:

Al termine della configurazione, e dopo un necessario riavvio di IIS, sarà possibile verificare il risultato dei propri sforzi eseguendo nuovamente il comando phpinfo():

PHPINFO: wincache enabled

 

ASP.NET – MantainScrollPositionOnPostback su Chrome e altri browser

Mantenere (o per meglio dire, ripristinare) la posizione della scrollbar della pagina in conseguenza di un postback è una funzionalità indispensabile per qualsiasi pagina contenente un form. Per anni in ASP.NET è stato possibile ottenere questo effetto aggiungendo un semplice parametro nella propria pagina/WebForm/MasterPage:

A livello di web.config<pages maintainScrollPositionOnPostBack="true" />

A livello di pagina<%@ Page MaintainScrollPositionOnPostback="true" %>

A livello di codicePage.MaintainScrollPositionOnPostBack = true;

Sfortunatamente questi metodi, oltre a non essere disponibili con Razor, non sono più compatibili con la maggior parte dei browser recenti. Nonostante ASP.NET consenta ancora, tramite i Browser Definition File, la possibilità di impostare funzionalità specifiche per ciascuno di essi, è senz’altro preferibile adottare una soluzione pienamente compatibile con l’aiuto di un semplice script basato sul framework jQuery.

Questa è la soluzione specifica per WinForms:

Mentre questa è quella pensata per Razor (nonché per qualsiasi altra pagina web):

Inutile dire che, in entrambi i casi, l’elemento input iniziale (asp:HiddenField nella versione WinForms) va inserito all’interno dell’elemento form su cui viene eseguito il Postback.

In alternativa all’elemento HTML <input>  potete anche utilizzare l’helper method equivalente di Razor, ovvero:

 

 

VMware 10 e Windows Update KB2995388: Not enough physical memory available

Gli utenti che utilizzano la versione 10 di VMware Player o Workstation sotto Windows e tengono aggiornato il proprio sistema incontreranno molto probabilmente un problema di questo tipo:

Error_msg

L’errore è dovuto a una incompatibilità tra la versione di VMWare in oggetto e l’aggiornamento KB2995388 rilasciato da Microsoft tra ottobre e novembre 2014. Il problema è stato subito segnalato dal team di sviluppo di VMware, che annuncia la prossima pubblicazione di un fix per risolvere il problema. Nel frattempo, l’unica soluzione percorribile è quella di disinstallare l’aggiornamento dal proprio sistema (Pannello di Controllo -> Programmi e Funzionalità -> Visualizza Aggiornamenti Installati):

Control_panel_2

Per ulteriori informazioni sull’errore “Not enough physical memory” si consiglia di fare riferimento all’articolo pubblicato sul blog di sviluppo di VMware.

 

Android SDK: quando Eclipse si blocca su “Resolving error markers” o “Android SDK Content Loader”

Gli sviluppatori Android che non sono ancora passati ad Android Studio e continuano a lavorare su piattaforma Eclipse sono spesso costretti ad avere a che fare con il problema del mancato caricamento del workspace, che solitamente si blocca in conseguenza di uno di questi due task: Android SDK: Resolving error markers…Android SDK Content Loader, che non di rado restano fermi al 0% o al 100% senza dare all’utente la possibilità di interagire con la GUI.

Nella maggior parte dei casi per risolvere questo problema è sufficiente eseguire Eclipse con le opzioni -clean e -refresh nel seguente modo:

Vista la frequenza con cui questo accade è consigliabile creare un batch file apposito. E’ sufficiente dargli un nome (il mio si chiama eclipse.clean.refresh.bat) e inserirlo nella cartella principale di Eclipse:

Quando questo comando non basta è necessario adottare un approccio più aggressivo, eliminando la cache che i componenti dell’SDK creano nella cartella .android situata nel profilo dell’utente corrente. Il batch file diventa quindi il seguente:

Prima di eseguire questi batch file assicuratevi che l’applicazione Eclipse sia chiusa: se necessario, chiudetela in modo forzato tramite Task Manager.

Close