Joomla è un CMS molto potente, versatile e webmaster-friendly.
Capita però a volte di imbattersi in situazioni spiacevoli…

Un bel giorno dopo aver scritto del codice in php che interrogava il database (codice richiamato con il plugin Jumi), mi è comparso questo messaggio tanto generico quanto terribile

“Error loading Modules“

Messaggio generico perchè non spiega assolutamente la fonte del problema, terribile perchè si perdono ore o peggio giorni interi per capire cosa sia successo.

Jumi è un plugin molto interessante che permette di incluedere del codice all’interno di un modulo o di un qualunque articolo.
Comodissimo, io lo uso in joomla per piccole query su database senza dover scrivere componenti o moduli.

Dove sta il problema quindi di questo messaggio “Error loading Modules“ ?

Mysql si comporta in modo “strano“: se si aprono 100 connessioni a 100 diversi database sullo stesso server, MySql utilizza lo stesso id di connessione per ognuna di esse!

Quindi se fate qualcosa del tipo:

$db1 = mysql_connect($host, $user, $pass);
$db2 = mysql_connect($host, $user, $pass);
mysql_select_db(’db1′, $db1);
mysql_select_db(’db2′, $db2);

avrete una situazione chiamata race condition: solamente db2 viene selezionato.
Ecco spiegato perchè i moduli non vengono visualizzati!

Come risolvere il problema dell’errore nel caricamento dei moduli?

La mia soluzione al problema delle connessioni multiple è questa:

$host1 = “localhost”;
$host2 = “127.0.0.1″;
$host3 = “127.0.0.1:3306″;
$host4 = “localhost:3306″;
$db1 = mysql_connect($host1, $user, $pass);
$db2 = mysql_connect($host2, $user, $pass);
$db3 = mysql_connect($host3, $user, $pass);
$db4 = mysql_connect($host4, $user, $pass);

Spero che questa soluzione vi risparmi un bel po’ di tempo!