Bug Optimize never updates the Memcached cache

Status
Not open for further replies.
Hello

We have a bug on our XenForo 1.5 forum using DragonByte Optimize. It worked fine for multiple years but we recently changed our infrastructure and since then, we have an issue with cache invalidation.

The data is written in our Memcached server, but it is never deleted or re-written. If a user add a post in a topic, the post is not visible until we flush the server ourselves.

We are using the same Memcached server with several other websites and it works fine. We are also using the Memcached option of XenForo itself and it works fine.

The only change we made on the new infrastructure is the PHP version. We were using PHP 7.0.x on the older servers, we are using PHP 7.2.x on the new one. Is it a known bug with this extension ?

Here's the code we have in our XenForo config file :

PHP:
//DB optimize
$config['Optimise']['memcacheServers'] = array(
    array('host' => '10.10.0.23', 'port' => 11211, 'persistent' => true, 'weight' => 1, 'timeout' => 1, 'retry_interval' => 15)
);

On the log side, we have noticed some errors, like this one :

Code:
[Wed May 29 11:36:45.837540 2019] [php7:error] [pid 17813] [client 86.253.236.165:55454] PHP Fatal error:  Maximum execution time of 120 seconds exceeded in /mnt/www/forummacg/library/DBTech/Optimise/Operator/Memcache.php on line 155, referer: https://forums.macg.co/admin.php?tools/run-deferred

Let me know if you need more information.

Thanks
Nicolas for MacGeneration
 
Does it work if you revert to PHP 7.0 and the older Memcache version on the server that runs the XF forum?
 
I'm not entirely sure how we're meant to debug something if switching between the last known good configuration (PHP 7.0 + older version of Memcache) and the faulty configuration (PHP 7.2 + newer version of Memcache) is impossible.

The timeout error is likely not going to pinpoint the problem either, as timeouts can happen at any point in the code, not just the block that actually caused it. In other words, if the timeout limit is 30 seconds and a block of code takes 29.999 seconds to execute, then an unrelated bit of code would return the timeout as the 30 second limit is reached.

That being said, the line it's referring to is this function: https://www.php.net/manual/en/memcache.getextendedstats.php which is a part of the PECL Memcache extension, which is out of date: https://pecl.php.net/package/memcache

You should be using Memcached instead: https://pecl.php.net/package/memcached

In other words, if you have the PECL Memcache installed, try uninstalling it and using only Memcached.
 
Hello @macgeneration,

We hope your ticket regarding DragonByte Optimise has been addressed to your satisfaction. This ticket has now been scheduled to be closed.

If your ticket has not been resolved, you can reply to this thread at any point in the next 7 days in order to reopen the ticket, afterwards this thread will be closed.

Please do not reply to this thread if your ticket has been resolved.

Thank you.


- DragonByte Technologies, Ltd.
 
Status
Not open for further replies.

Legacy DragonByte Optimise

XenForo 1.5.3+
Seller
DragonByte Technologies
Release date
Last update
Total downloads
258
Customer rating
0.00 star(s) 0 ratings
Back
Top