Image Optimizer for XF 2.0

Image Optimizer for XF 2.0 [Paid] 2.1.8

No permission to buy ($29.00)
hmmm, just bought this ADD on, and realize I have to run this command after the ADD on is installed:

sh src/addons/Truonglv/ImageOptimizer/setup.sh

Where do I have to run this?
 
Where do I have to run this?
SSH into your server shell, and run it from your XF root directory.
Its purpose is to check for, and compile if necessary, the required binaries. You do not need to run it if your server already has the required binaries.
 
All done now, it works... but it only compressed 1 file :D

Earlier in this thread someone asked if there are optimal settings for this plugin... because so far it had not had much use.

Also can it help to get rid of these strange errors I get from Woorank
Some images are not using next-gen formatting
Some images are not properly sized
Some offscreen images have not been deferred
Some images do not have explicit dimensions
If so, what do I have to do ?
 
can you tell us how you know how much it has processed of the total number of image files?
File numbers aren't given, just total size and logged activity.
Logged activity appears to show that it's now completed all existing files, and just working on new files added ?? But those attachment id's suggests there's another ~3k to go ?? Based on the number of files being processed for each 5 minute run ...

Screen Shot 2022-03-22 at 09.24.15.png

I now/currently have 61 Gb in internal_data/attachments/ and 40Gb in data/attachments/. The above saying 72Gb was the pre-addon size. The DB log says it's done ~372k image files, I have just over double that within those directories. It's impossible that I have ~30Gb in non-image attachments, so I don't really know why the discrepancy.

Regardless, a 35% drop from 72Gb to 43Gb - and the improvement in site load speed from lower size images - is impressive.
 
Last edited:
I have this error

remote: Enumerating objects: 4707, done.
remote: Counting objects: 100% (121/121), done.
remote: Compressing objects: 100% (87/87), done.
remote: Total 4707 (delta 61), reused 76 (delta 32), pack-reused 4586
Receiving objects: 100% (4707/4707), 1.71 MiB | 9.37 MiB/s, done.
Resolving deltas: 100% (3079/3079), done.
./setup.sh: line 60: ./configure: No such file or directory
 
On one of our smaller forums the cron job appears to have processed all of the images.

Do we need to leave the cron job running or can we disable it now? (assuming any new uploads will be optimised by the add-on as they are saved on the server)
 
Last edited:
Also, is there a hard limit on the maximum number for Images per job running?

We have a very capable server and when we set it to 2000 it only seems to process between 200-380 (based on 20 images per log page).
 
Last edited:
Also, is there a hard limit on the maximum number for Images per job running?

We have a very capable server and when we set it to 2000 it only seems to process between 200-380 (based on 20 images per log page).

Seems to be a time limit - max default runtime for a job is 8 seconds - but this can be modified and overridden, see here:
 
Processing 800 images per job now, which should help us work through the 1+million attachments a bit quicker.
 
On one of our smaller forums the cron job appears to have processed all of the images. Do we need to leave the cron job running or can we disable it now? (assuming any new uploads will be optimised by the add-on as they are saved on the server)

To answer my own question, it seem to be yes - you need to keep the cron job running since the add-on does not appear to optimise images on posting/uploading.
 
Getting a service Unavailable error. Not sure if resmush is down or not.

  • GuzzleHttp\Exception\ServerException: Server error: POST http://api.resmush.it/ws.php resulted in a 503 Service Unavailable response: {"error":lba-503,"error_long":"Service backend unavailable","generator":"reSmush.it LBA"}
  • src/addons/EWR/Backup/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113
  • Generated by: Unknown account
  • May 3, 2022 at 11:55 AM

Stack trace​

#0 src/addons/EWR/Backup/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#3 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/TaskQueue.php(47): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
#4 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(246): GuzzleHttp\Promise\TaskQueue->run(true)
#5 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(223): GuzzleHttp\Promise\Promise->invokeWaitFn()
#6 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(267): GuzzleHttp\Promise\Promise->waitIfPending()
#7 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\Promise\Promise->invokeWaitList()
#8 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending()
#9 src/addons/EWR/Backup/vendor/guzzlehttp/guzzle/src/Client.php(131): GuzzleHttp\Promise\Promise->wait()
#10 src/addons/EWR/Backup/vendor/guzzlehttp/guzzle/src/Client.php(89): GuzzleHttp\Client->request('post', 'http://api.resm...', Array)
#11 src/addons/ThemeHouse/ImageOptimizer/ImageOptimizer/ReSmush.php(105): GuzzleHttp\Client->__call('post', Array)
#12 src/addons/ThemeHouse/ImageOptimizer/Service/ImageOptimizer/Optimize.php(61): ThemeHouse\ImageOptimizer\ImageOptimizer\ReSmush->optimizeImage(Object(ThemeHouse\ImageOptimizer\Service\ImageOptimizer\Optimize))
#13 src/addons/ThemeHouse/ImageOptimizer/ContentHandler/AbstractHandler.php(211): ThemeHouse\ImageOptimizer\Service\ImageOptimizer\Optimize->run()
#14 src/addons/ThemeHouse/ImageOptimizer/Cron/Optimize.php(31): ThemeHouse\ImageOptimizer\ContentHandler\AbstractHandler->optimize(Object(ThemeHouse\ImageOptimizer\Entity\Status))
#15 src/XF/Job/Cron.php(37): ThemeHouse\ImageOptimizer\Cron\Optimize::optimizeImages(Object(XF\Entity\CronEntry))
#16 src/XF/Job/Manager.php(260): XF\Job\Cron->run(8)
#17 src/XF/Job/Manager.php(202): XF\Job\Manager->runJobInternal(Array, 8)
#18 src/XF/Job/Manager.php(86): XF\Job\Manager->runJobEntry(Array, 8)
#19 job.php(43): XF\Job\Manager->runQueue(false, 8)
#20 {main}

Request state​

array(4) {
["url"] => string(12) "/xen/job.php"
["referrer"] => string(33) "https://www.satelliteguys.us/xen/"
["_GET"] => array(0) {
}
["_POST"] => array(0) {
}
}
 
Getting a service Unavailable error. Not sure if resmush is down or not.

  • GuzzleHttp\Exception\ServerException: Server error: POST http://api.resmush.it/ws.php resulted in a 503 Service Unavailable response: {"error":lba-503,"error_long":"Service backend unavailable","generator":"reSmush.it LBA"}
  • src/addons/EWR/Backup/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113
  • Generated by: Unknown account
  • May 3, 2022 at 11:55 AM

Stack trace​

#0 src/addons/EWR/Backup/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#3 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/TaskQueue.php(47): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
#4 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(246): GuzzleHttp\Promise\TaskQueue->run(true)
#5 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(223): GuzzleHttp\Promise\Promise->invokeWaitFn()
#6 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(267): GuzzleHttp\Promise\Promise->waitIfPending()
#7 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\Promise\Promise->invokeWaitList()
#8 src/addons/EWR/Backup/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending()
#9 src/addons/EWR/Backup/vendor/guzzlehttp/guzzle/src/Client.php(131): GuzzleHttp\Promise\Promise->wait()
#10 src/addons/EWR/Backup/vendor/guzzlehttp/guzzle/src/Client.php(89): GuzzleHttp\Client->request('post', 'http://api.resm...', Array)
#11 src/addons/ThemeHouse/ImageOptimizer/ImageOptimizer/ReSmush.php(105): GuzzleHttp\Client->__call('post', Array)
#12 src/addons/ThemeHouse/ImageOptimizer/Service/ImageOptimizer/Optimize.php(61): ThemeHouse\ImageOptimizer\ImageOptimizer\ReSmush->optimizeImage(Object(ThemeHouse\ImageOptimizer\Service\ImageOptimizer\Optimize))
#13 src/addons/ThemeHouse/ImageOptimizer/ContentHandler/AbstractHandler.php(211): ThemeHouse\ImageOptimizer\Service\ImageOptimizer\Optimize->run()
#14 src/addons/ThemeHouse/ImageOptimizer/Cron/Optimize.php(31): ThemeHouse\ImageOptimizer\ContentHandler\AbstractHandler->optimize(Object(ThemeHouse\ImageOptimizer\Entity\Status))
#15 src/XF/Job/Cron.php(37): ThemeHouse\ImageOptimizer\Cron\Optimize::eek:ptimizeImages(Object(XF\Entity\CronEntry))
#16 src/XF/Job/Manager.php(260): XF\Job\Cron->run(8)
#17 src/XF/Job/Manager.php(202): XF\Job\Manager->runJobInternal(Array, 8)
#18 src/XF/Job/Manager.php(86): XF\Job\Manager->runJobEntry(Array, 8)
#19 job.php(43): XF\Job\Manager->runQueue(false, 8)
#20 {main}

Request state​

array(4) {
["url"] => string(12) "/xen/job.php"
["referrer"] => string(33) "https://www.satelliteguys.us/xen/"
["_GET"] => array(0) {
}
["_POST"] => array(0) {
}
}
Sorry but it seems you posted in wrong resource support.
 
Top Bottom