use the site for a while, priming the cache with lots of stuff.
change the php configuration to either remove, or install, the igbinary extension.
try to use the site.
Observe bizarre garbage.
Why does this happen?
Because the plugin uses function_exists( 'igbinary_serialize' ) to know whether the stuff already in the cache was serialized with igbinary (which is more space- and time- efficient than the ordinary php serialize() function.
Serializing with one and deserializing with the other (a) doesn't cause an error condition!!! and (b) generates garbage cache entries, then kicked back to WordPress. Which chokes.
Workaround: don't do that.
Fix: tag the cache entries by how they were serialized. Deserialize them the same way.
Fix: put something in the database (maybe an extra one row table) with the how-serialized tag. Blow up the cache and start over if there's a mismatch.
Steps to totally mess up a site.
Why does this happen? Because the plugin uses
function_exists( 'igbinary_serialize' )
to know whether the stuff already in the cache was serialized with igbinary (which is more space- and time- efficient than the ordinary phpserialize()
function.Serializing with one and deserializing with the other (a) doesn't cause an error condition!!! and (b) generates garbage cache entries, then kicked back to WordPress. Which chokes.
Workaround: don't do that.
Fix: tag the cache entries by how they were serialized. Deserialize them the same way.
Fix: put something in the database (maybe an extra one row table) with the how-serialized tag. Blow up the cache and start over if there's a mismatch.