digitalpoint
Well-known member
Memcache has built in fault tolerance via the PHP extension's addServer() connection pool (which Zend/XF uses just fine).
If any one memcache server is down, the XF's session causes a fatal error even though nothing is actually wrong on the backend end (again... the PHP extension handles failover of the memcache cluster internally).
It looks like the Zend_Session class already has the ability to not fail on a startup exception (more specifically in this case I believe it's a PHP notice that's being treated as a fatal exception). Info on the same issue here: http://framework.zend.com/issues/browse/ZF-6848
It looks like the two session start lines in XenForo_Session could be changed to this (since the start() method already allows passing in the throw_startup_exceptions option):
Long story short is if one memcache server goes down, the failover is already handled in PHP, but XF will end up with fatal error for any page the way it is now.
If any one memcache server is down, the XF's session causes a fatal error even though nothing is actually wrong on the backend end (again... the PHP extension handles failover of the memcache cluster internally).
It looks like the Zend_Session class already has the ability to not fail on a startup exception (more specifically in this case I believe it's a PHP notice that's being treated as a fatal exception). Info on the same issue here: http://framework.zend.com/issues/browse/ZF-6848
It looks like the two session start lines in XenForo_Session could be changed to this (since the start() method already allows passing in the throw_startup_exceptions option):
PHP:
$session->start(array('throw_startup_exceptions' => E_ALL ^ E_NOTICE));
Long story short is if one memcache server goes down, the failover is already handled in PHP, but XF will end up with fatal error for any page the way it is now.