PDA

View Full Version : Modulo php scompare


SwOrDoFmYdEsTiNy
11-02-2015, 18:57
Buona sera apro questo thread perchè ho un problema con la configurazione di memcached su nginx.
l'ambiente in cui sto lavorando è una red hat 5.7 su cui è installato nginx + php-fpm + memcached.
Sul web server sono configurati due server block, uno per host1.com (su cui memcached NON deve essere caricato) e uno per host2.com (su cui memcached DEVE essere caricato).
Sono anche presenti due pool php-fpm (in ascolto su due porte diverse), uno per host1 (quello di default di php-fpm) e uno per host2 (su cui è stata aggiunta la riga relativa al caricamento di memcached.so)
Dalla pagina phpinfo() eseguita su host2.com vedo che memcached è caricato e funziona, e se provo a creare una pagina php di prova riesco a inserire i dati i cache e anche a recuperarli.
Il problema si presenta dopo qualche refresh, perchè viene mostrata una pagina bianca e tutto ciò che è legato a memcached smette di funzionare, anche se è capitato che dopo 40 refresh funzionasse un paio di volte per poi smettere di nuovo.
Dai log di php-fpm vedo diversi fatal error, tutti legati a memcached, a volte non trova la classe Memcached() mentre altre volte non riesce a trovare i metodi (get e set sono quelli usati).
Se mi collego tramite telnet al demone memcached riesco a interagire senza problemi (nonstante tramite php non funzioni nulla) riesco infatti a vedere lo stato del demone (tramite il comando stats) e anche a recuperare i valori salvati nella cache.
Se viene fatto il restart del servizio php-fpm tutto ricomincia a funzionare per qualche minuto ma poi smette.
è tutto il giorno che ci sbatto la testa ma non ho trovato nessuna soluzione, è come se l'interprete php si dimenticasse di avere a disposizione quel modulo.

La pagina di prova di memcached è scritta nel seguente modo:
<?php
$mc = new Memcached();
$mc->addServer("127.0.0.1", 11211);

$result = $mc->get("test_key");

if($result) {
echo $result;
} else {
echo "No data on Cache. Please refresh page pressing F5";
$mc->set("test_key", "test data pulled from Cache!") or die ("Failed to save data at Memcached server");
}
?>

Qualcuno ha idea di cosa possa essere? Grazie mille e buona serata

edit: Mi sono dimenticato di dire che sul web server è installato joomla, ma non me ne occupo io e non ho modo di interagire con joomla stesso (e penso anche che non si collegato al problema, ma sinceramente non so più dove sbattere la testa XD)

Kaya
13-02-2015, 08:18
Il modulo è caricato staticamente a livello di php.ini oppure viene caricato dallo script php?
Ho avuto in passato problemi con dei moduli che venivano caricati dinamicamente

Versione di php e nginx?

SwOrDoFmYdEsTiNy
13-02-2015, 18:17
Il modulo è caricato staticamente a livello di php.ini oppure viene caricato dallo script php?
Ho avuto in passato problemi con dei moduli che venivano caricati dinamicamente

Versione di php e nginx?

No il modulo non viene caricato nel php.ini, ma viene caricato tramite il file di configurazione del pool php-fpm /etc/php-fpm.d/host1.conf tramite il parametro php_admin_value[extension] = memcached.so; perchè mi serve che venga caricato solo per un determinato dominio e non per tutto il server.
Nel php.ini è stata decommentato solo il parametro extension_dir.
purtroppo adesso non sono in ufficio e non ho modo di collegarmi al server per recuperare le versioni di nginx e php, ma lunedì appena arrivo in ufficio vado a controllare e le riporto qui