Problemi con OpenX che richiede troppa RAM (128 MB)
È da un po' di anni ormai che utilizzo OpenX, decisamente un bel programma in PHP per la gestione di campagne pubblicitare. Ha molte feature ma rimane molto facile da usare e configurare, inoltre come molte applicazioni PHP prevede un percorso di update semi-automatico che facilita di molto la vita all'mministratore del sistema.
Fino a oggi :)
I fatti
Fino a poco tempo fa la mia istanza di OpenX girava su un VPS (Virtual Private Server) quindi l'ambiente operativo era molto poco restrittivo, visto che ci giravano solo poche applicazioni e decisamente fidate: le mie! Mi sono però deciso a passare ad uno shared hosting per vari motivi:
- primo e più importante: zero (o quasi) sbattimenti di tipo sistemistico, che se sono per un cliente ci stanno ma per se stessi sono solo una gran perdita di tempo;
- costo minore (fra cui, ancora, i costi di amministrazione);
- sicurezza: gli shared hosting sono prede ambite, ma sono decisamente meglio protetti di un VPS gestito da un sistemista solitario!
Insomma mi decido, scelgo un provider e trasporto tutto, con qualche intoppo ma dovuto solamente alla fretta e alla (relativa) poca importanza dell'applicazione.
Per un po' di tempo l'applicazione funziona egregiamente, poi un bel giorno, dopo diverso tempo che il provider ha avuto problemi di stabilità sulla macchina e ha cambiato qualche configurazione, mi ritrovo questa schermata al posto della pagina di login di OpenX:

Traducendo, per i motori di ricerca (sono un gran paraculo, lo so):
Sorry, but OpenX cannot currently run on your machine
Detected problem:
The PHP "memory_limit" value is set to less than the required minimum of 128MB, but because the built in PHP function "ini_set" has been disabled, the memory limit cannot be automatically increased.
"Ma come", mi chiedo, "non si è mai lamentato fino ad adesso, ed ora scassa i maroni con 'sta ram? Ma poi, cacchio pretende pure 128 MB di ram tutta per sè! E che ci dovrà fare?" Bah
Contatto l'assistenza chiedendogli spiegazioni di questa modifica... e qui devo spezzare una lancia a favore dell'assistenza di Web4Web che il 1° maggio, durante un black-out multiplo e decisamente murphiano si è vista arrivare un ticket del genere, ma al posto che mandarmi affanculo mi ha spiegato che un memory_limit di 128 MB è da server dedicato! E te credo...
La soluzione
Certo, cìè anche una soluzione al problema, ma non pensate che mi sia piaciuta o che sia raccomandabile...
In sostanza bisogna [musica da film del terrore...] bisogna... modificare a mano il codice sorgente! Aaaaargh!!!! [urlo stile Psyco]
C'è infatti una bella funzioncina PHP dove c'è schiantato dentro un bel numerone e che viene utilizzata per sapere la quantità minima di RAM di cui ha bisogno l'applicazione, sotto la quale si rifiuta persino di farvi fare login! Pazzesco...
La funzione in questione si chiama:
OX_getMinimumRequiredMemory()
e si trova nel file:
memory.php
nella root dell'applicazione. In sostanza dovete modificarla in modo che restituisca 33554432 (32 MB) al posto di 134217728 (128 MB). Il calcolo (suggerito dai commenti nel codice) è:
MB x 1048576
Quindi la funzione deve diventare qualcosa di simile:
function OX_getMinimumRequiredMemory($limit = null)
{
if ($limit == 'maintenance') {
return 33554432; // 32MB in bytes (32 * 1048576)
}
return 33554432; // 32MB in bytes (32 * 1048576)
}
In conclusione
Questa soluzione non mi piace, per diversi motivi:
- non risponde alla fatidica domanda "Cosa caz... caspita se ne fa OpenX di 128 MB?";
- perché c'è un numero cablato nel codice e non una semplice configurazione?
- come fa la gente a farlo girare negli shared hosting "normali" (ma anche quelli super non è che ti danno tutta quella RAM, eh...)
- un domani che arriva un aggiornamento mi devo ricordare di ri-applicare questa modifica, sperando che continui a funzionare...
Però... beh almeno funziona :)
- dimitri's blog
- Aggiungi un commento
- 238 letture

