Pro Reports still not showing Uptime stats when bulk creating reports

This issue has shown up many times over the months, such as here and here.
Since all those other threads are closed, I made this new one.

I’ve experienced this issue a lot, and various times it seemed like it was fixed after recent updates, or removing/reinstalling the plugins, etc. Right now after a new test, it still gives me trouble.

The problem is that when I export a report one by one, it’s fine. When I bulk export reports, that’s when one or more of them will have the Uptime stats missing, it looks like this in the report:

In previous problems with this report, people would say it shows the tag rather than the data, in my case it doesn’t show the tag, just the N/A text.
When this happens, I try to wake it up by doing a fresh sync of the sites, then export the report again one by one.

When I bulk exported 13 sites, 3 of them were bad. When I bulk exported 19 sites the other day, at least 6 or 8 of them were bad. So I just export again one by one until the data shows up.

Before creating this thread, I completely removed the pro reports and uptime monitor extensions and reinstalled them fresh, just to be sure. Everything is up to date in my system.

Here is the community system report:

### WordPress Check                Required                                               Detected                                     Status   ###

FileSystem Method                  = direct                                               direct                                       Pass        
MultiSite Disabled                 =true                                                  true                                         Pass        
WordPress Memory Limit             >=64M                                                  128M                                         Pass        
WordPress Version                  >=3.6                                                  6.2.2                                        Pass        

### PHP                            Required                                               Detected                                     Status   ###

cURL Extension Enabled             =true                                                  true                                         Pass        
cURL Timeout                       >=300 seconds                                          300                                          Pass        
cURL Version                       >=7.18.1                                               7.68.0                                       Pass        
OpenSSL Version                    >=OpenSSL/1.1.0                                        OpenSSL/1.1.1f                               Pass        
PCRE Backtracking Limit            >=10000                                                1000000                                      Pass        
PHP Allow URL fopen                N/A                                                    YES                                                      
PHP Disabled Functions             N/A                                                    , pcntl_alarm, pcntl_async_signals, pcntl_exec, pcntl_fork, pcntl_get_last_error, pcntl_getpriority, pcntl_setpriority, pcntl_signal, pcntl_signal_dispatch, pcntl_signal_get_handler, pcntl_sigprocmask, pcntl_sigtimedwait, pcntl_sigwaitinfo, pcntl_strerror, pcntl_unshare, pcntl_wait, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifcontinued, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig,            
PHP Exif Support                   N/A                                                    YES ( V7.4.)                                             
PHP IPTC Support                   N/A                                                    YES                                                      
PHP Loaded Extensions              N/A                                                    Core, PDO, Phar, Reflection, SPL, SimpleXML, Zend OPcache, bcmath, bz2, calendar, ctype, curl, date, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, litespeed, mbstring, memcached, msgpack, mysqli, mysqlnd, openssl, pcntl, pcre, pdo_mysql, pdo_sqlite, posix, pspell, readline, redis, session, soap, sockets, sodium, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tidy, timezonedb, tokenizer, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip, zlib            
PHP Max Execution Time             >=30 seconds                                           60                                           Pass        
PHP Max Input Time                 >=30 seconds                                           120                                          Pass        
PHP Memory Limit                   >=128M                                                 256M                                         Pass        
PHP Post Max Size                  >=2M                                                   30M                                          Pass        
PHP Safe Mode Disabled             =true                                                  true                                         Pass        
PHP Upload Max Filesize            >=2M                                                   20M                                          Pass        
PHP Version                        >=7.4                                                  7.4.30                                       Pass        
PHP XML Support                    N/A                                                    YES                                                      
SSL Extension Enabled              =true                                                  true                                         Pass        
SSL Warnings                       = empty                                                                                             Pass        

### MySQL                          Required                                               Detected                                     Status   ###

MySQL Client Encoding              N/A                                                    utf8                                                     
MySQL Mode                         N/A                                                    ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION            
MySQL Version                      >=5.0                                                  10.3.34-MariaDB-0ubuntu0.20.04.1             Pass        

### Server Configuration           Detected Value                                      ###

Accept Content                     text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Charset Content             N/A                                                    
Architecture                       64		 bit                                               
Gateway Interface                                                                         
HTTPS                              ON                                                     
Memory Usage                       6.6 MB                                                 
Operating System                   Linux                                                  
Request Time                       1686251422                                             
Server Protocol                    HTTP/1.1                                               
Server self connect                Not expected HTTP response body:                       
Server Software                    LiteSpeed                                              
User Agent                         Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ Safari/537.36

### MainWP Dashboard Settings      Detected Value                                      ###

Abandoned plugins/themes tolerance 550                                                    
Basic uptime monitoring enabled    No                                                     
MainWP Dashboard Version           Latest: | Detected: Pass               
MainWP legacy backups enabled      No                                                     
Maximum number of pages to return                                                         
Maximum number of posts to return                                                         
Maximum simultaneous install and update requests                                                       
Maximum simultaneous requests      4                                                      
Maximum simultaneous requests per ip1                                                      
Maximum simultaneous sync requests                                                        
Minimum delay between requests     200                                                    
Minimum delay between requests to the same ip1000                                                   
Number of child sites              43                                                     
Optimize for shared hosting or big networksYes                                                    
Plugin advanced automatic updates enabledYes                                                    
Primary Backup System              MainWP UpdraftPlus Extension                           
REST API enabled                   No                                                     
Site health monitoring enabled     No                                                     
Theme advanced automatic updates enabledNo                                                     
Use WP Cron                        Yes                                                    
WP Core advanced automatic updates enabledNo                                                     

### Extensions                     Version                                                License                                      Status   ###

Advanced Uptime Monitor Extension  5.2.2                                                  Actived                                      Pass        
MainWP Custom Dashboard Extension  4.1.2                                                  Actived                                      Pass        
MainWP Domain Monitor Extension    4.0.4                                                  Actived                                      Pass        
MainWP Pro Reports Extension       4.1.1                                                  Actived                                      Pass        
MainWP Sucuri Extension            4.0.13                                                 Actived                                      Pass        
MainWP UpdraftPlus Extension       4.0.8                                                  Actived                                      Pass        

### Plugin                         Version                                                Status                                    ###

FluentSMTP                         2.2.4                                                  Active                                       
Loginizer                          1.7.9                                                  Active                                       
MainWP Dashboard                                                         Active                                       
UpdraftPlus - Backup/Restore                                              Active                                       
WPCodeBox                          1.4.1                                                  Active                                       

I have more to add but I can’t because Discord keeps throwing “403” errors and won’t let me add or edit additional info.

Hey @zackw

  1. Does this happen only with Uptime Monitoring data?

  2. I assume that by “bulk export reports” you mean Downloading the PDFs?
    a) If so, does the issue also occur when you Preview the reports?
    b) And is the PDF that gets sent as an attachment in them email also affected?

I don’t use preview or email. I open the report and set the date, then I pick the tag for the clients and then download them all at once. They all generate in the little popup, and then begin downloading all together in the browser. Most will have the data and a handful won’t, it seems very random, like it’s not the same website that always fails.
If I go back and download just those sites one by one, the data is usually there.

And it’s only the uptime data, all the other tags on the report are fine.

A key point is that the tag is being processed, I don’t see the raw tag in the report, I just see “N/A” like something else happened when it was trying to find the data. Maybe it took too long? If all the PDFs are trying to generate at once, maybe there is a jam up when gathering data that leaves a few sites behind?

Thanks for the additional details.

We will look into why the Uptime Monitoring data is empty when the Pro Reports generates a large number of PDFs at once.

We’ll update you via this thread as soon as we have more information.

The issue appears to be related to a relatively recent API limit imposed by the Uptime Robot, which is 10 API requests per minute for the users of the free plan.

Since the uptime data that are included in the Pro Report (uptime stats for the last X days) isn’t stored in the database, it has to be fetched via the API.

For the next version of the extension, we will implement a process that will retry the API requests until they all return the expected data.

That makes perfect sense.

I can’t think of a good way to do this. Would it be possible to just store some of that data locally? As an example, I might not download my reports until the 5th or the 10th, but it’s for the previous month. So on June 8 I’ll download the reports for all of May. It seems to me like some of that data could just be stored/cached locally and wouldn’t need to access the API at all at that time.

Considering that doing a monthly report is probably the most common use case, if you stored uptime data for 2 or 3 months, just pinging the API on a random schedule to get it updated across all sites, then we wouldn’t have any delays pulling reports.

I know that MainWP automatically syncs the websites regularly, but this API limit is going to start failing for those updates too. It’s almost like (for free UptimeRobot anyway), you have to update the sites at random, spacing them out no more than 10 per minute, to keep the data fresh.
But again, storing that data locally for a few months would help with doing mass reports.

Hopefully you can find some useful way to work with those limits!

1 Like

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.