2015-01-02 9 views
6

Ho uno strano problema, dal momento che ho aggiornato PHP da 5.4 a 5.6. Non ho mai visto l'errore personalmente, ma i registri sono completi ogni giorno con questo messaggio:PHP 5.6 Sessions + Memcache (d)

session_write_close(): Impossibile scrivere i dati di sessione (memcached). Si prega di verificare che l'impostazione attuale del session.save_path è corretta (127.0.0.1:11211)

Questo non fa che accade sempre, ma solo per alcuni utenti. E questo accade su tre server diversi che hanno PHP ~ 5.6 & Memcached sull'ultimo Debian. Ho provato a passare l'estensione Memcached a Memcache (ovviamente con la modifica di save_handler in php.ini), e il problema persisteva ancora. Ho anche provato a disabilitare il blocco della sessione in php.ini. Il problema è sicuramente correlato a PHP, perché ho testato il daemon Memcached stesso con uno script Perl e non c'era un singolo errore di connessione.

Tutto stava funzionando perfettamente per un tempo molto lungo, e ho iniziato ad avere questo problema subito dopo l'aggiornamento di PHP, quindi non è correlato con la configurazione memcached, o qualcosa del genere. Forse mi manca qualcosa? Forse 5.6 richiede alcune configurazioni aggiuntive nel suo file ini? Non riesco a capirlo.

Al momento sono un po 'bloccato e spero che qualcuno possa aiutarmi con un consiglio. Posso provare a tornare a 5.4, oa 5.5, ma non è davvero un'opzione, mi piacerebbe molto attenermi a 5.6.

+0

Naturalmente 5.6 è l'ideale, ma sarebbe una difficoltà maggiore tornare a 5.5 per un po '? È possibile compilare la propria versione e semplicemente accenderla nella configurazione di Apache per la scatola, per vedere se si ottiene lo stesso problema. Passare alla versione primaria 5.6 sarebbe quindi banale. – halfer

risposta

0

Assicurati che in php.ini la sessione sia come questa.

session.save_path = "tcp://127.0.0.1:11211" 

o socket Unix

session.save_path = "unix:///var/run/memcached.sock" 
1

Esistono 2 Extension per php, memcache e Memcached.

memcached l'estensione è basata su libmemcache e si dovrebbe comunque preferirla.

Nella mia esperienza le versioni correnti del daemon memcache non hanno funzionato correttamente con l'estensione memcache. La memorizzazione dei dati ha funzionato, ma ho riscontrato notevoli problemi di prestazioni per la scrittura dei dati nella sessione dopo la prima richiesta (la prima richiesta per una sessione completamente nuova era soddisfacente e veloce, ogni richiesta successiva richiedeva fino a 10 secondi!). Sostituzione memcache con memcached risolto questo particolare problema.

Attenzione: La sintassi per session.save_path per memcached era leggermente diverso. Ho dovuto ommit la tcp:// o che non avrebbe funzionato

Così per memcached uso:

session.save_path = "127.0.0.1:11211" 

E per memcache uso:

session.save_path = "tcp://127.0.0.1:11211"