Reliability release: the bulk queue now recovers on its own from a worker that dies mid-batch, and the plugin says clearly when visitors are not being served the converted images.
Restartable bulk queue
On a busy library the queue could stall with no way to restart it. The cause was PHP's time limit. On Linux it counts CPU time, and multithreaded AVIF encoding uses it about five times faster than the wall clock (one 12 MP photo: 1.3 s wall, 7 s CPU). A batch sized to fit in 30 seconds of wall time could run through 50 seconds of CPU and be killed. It then left the lock held for five minutes and its rows blocked for ten.
- The time limit is restarted before every file, so the limit is not reached in the first place.
- When a worker does die, it releases its rows and the lock and starts the next worker. This works even through WordPress's own fatal-error handler, which exits before later shutdown functions get a chance to run.
- Only the file being worked when the worker died counts as a failed attempt. A file that kills the worker three times leaves the queue, and the log names it.
- The lock doubles as a heartbeat: two minutes without one means the worker is dead, whatever the transient says.
- The Bulk tab shows Resume (N queued) for a leftover queue instead of making you rescan the library, and says when the queue has gone idle.
- The browser runner retries failed batches for about three minutes instead of stopping at the first error.
"Image delivery is off" notice
Conversion runs whether or not delivery is on, so it was easy to convert a whole library and never notice visitors were still getting the original JPEGs. A red notice now appears on the MM Optimizer screens, the dashboard and the media library. It gives the number of derivatives that are ready but not being served, and why:
- A conflicting plugin is active. Delivery is held back, and it now switches on by itself once that plugin is deactivated.
- The mode is set to No delivery. This setting stays until you change it.
In 1.0.0, applying the recommended configuration while a conflicting plugin was active saved No delivery. The message said delivery would switch itself back on; it never did. The recommendation now leaves the mode alone and lets conflict detection hold delivery back. If you applied it on 1.0.0, pick a delivery mode by hand; the notice links straight to the setting.
Fixes
- The Bulk tab's Derivatives generated and Space saved counters always read zero on MySQL 8, because
OUTis a reserved word.
Upgrading
Upload over 1.0.0. No schema change. An existing queue is picked up by Resume.