[DigitalPoint] App for Cloudflare®

[DigitalPoint] App for Cloudflare® 1.9.6

No permission to download
Can you remove the add-on? If not, you could disable all add-ons in your config.php file:
Code:
$config['enableListeners'] = false;

Remove the add-on -> enable listeners again -> reinstall add-on
 
I solved it thanks.

@digitalpoint can you check this? Xon said maybe you can resolve this slow query:

Code:
    Exception: Slow query: 20.2705 seconds, /***/job.php src/addons/SV/SlowQueryLogger/Db/Mysqli/SlowQueryLogAdapter.php:372

    Generated by: Unknown account Sep 29, 2025 at 7:17 PM

Stack trace

#0 src/addons/SV/SlowQueryLogger/Db/Mysqli/SlowQueryLogAdapter.php(159): SV\SlowQueryLogger\Db\Mysqli\SlowQueryLogAdapter->SV\SlowQueryLogger\Db\Mysqli\{closure}()
#1 src/addons/SV/SlowQueryLogger/Db/Mysqli/SlowQueryLogAdapter.php(371): SV\SlowQueryLogger\Db\Mysqli\SlowQueryLogAdapter->withOriginalDbAdapter(Object(Closure))
#2 src/XF/Db/Mysqli/Statement.php(110): SV\SlowQueryLogger\Db\Mysqli\SlowQueryLogAdapter->logQueryCompletion()
#3 src/XF/Db/AbstractAdapter.php(96): XF\Db\Mysqli\Statement->execute()
#4 src/XF/Mvc/Entity/Finder.php(1428): XF\Db\AbstractAdapter->query('
            SELECT `xf_...')
#5 src/addons/DigitalPoint/Cloudflare/Repository/Geo.php(14): XF\Mvc\Entity\Finder->fetch(1000)
#6 src/addons/DigitalPoint/Cloudflare/Cron/CleanUp.php(15): DigitalPoint\Cloudflare\Repository\Geo->deleteUnusedGeoData()
#7 src/XF/Job/Cron.php(37): DigitalPoint\Cloudflare\Cron\CleanUp::runHourlyCleanUp(Object(XF\Entity\CronEntry))
#8 src/XF/Job/Manager.php(260): XF\Job\Cron->run(9.9802)
#9 src/addons/SV/SlowQueryLogger/XF/Job/Manager.php(34): XF\Job\Manager->runJobInternal(Array, 9.9802)
#10 src/XF/Job/Manager.php(202): SV\SlowQueryLogger\XF\Job\Manager->runJobInternal(Array, 9.9802)
#11 src/XF/Job/Manager.php(86): XF\Job\Manager->runJobEntry(Array, 9.9802)
#12 job.php(43): XF\Job\Manager->runQueue(false, 10)
#13 {main}

Request state

array(4) {
  ["url"] => string(15) "/***/job.php"
  ["referrer"] => string(81) "https://www.***.net/***/konu/toplam-5-bin-tlye-ekipman-oenerisi.3930172/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(0) {
  }
}
 
I solved it thanks.

@digitalpoint can you check this? Xon said maybe you can resolve this slow query:

Code:
    Exception: Slow query: 20.2705 seconds, /***/job.php src/addons/SV/SlowQueryLogger/Db/Mysqli/SlowQueryLogAdapter.php:372

    Generated by: Unknown account Sep 29, 2025 at 7:17 PM

Stack trace

#0 src/addons/SV/SlowQueryLogger/Db/Mysqli/SlowQueryLogAdapter.php(159): SV\SlowQueryLogger\Db\Mysqli\SlowQueryLogAdapter->SV\SlowQueryLogger\Db\Mysqli\{closure}()
#1 src/addons/SV/SlowQueryLogger/Db/Mysqli/SlowQueryLogAdapter.php(371): SV\SlowQueryLogger\Db\Mysqli\SlowQueryLogAdapter->withOriginalDbAdapter(Object(Closure))
#2 src/XF/Db/Mysqli/Statement.php(110): SV\SlowQueryLogger\Db\Mysqli\SlowQueryLogAdapter->logQueryCompletion()
#3 src/XF/Db/AbstractAdapter.php(96): XF\Db\Mysqli\Statement->execute()
#4 src/XF/Mvc/Entity/Finder.php(1428): XF\Db\AbstractAdapter->query('
            SELECT `xf_...')
#5 src/addons/DigitalPoint/Cloudflare/Repository/Geo.php(14): XF\Mvc\Entity\Finder->fetch(1000)
#6 src/addons/DigitalPoint/Cloudflare/Cron/CleanUp.php(15): DigitalPoint\Cloudflare\Repository\Geo->deleteUnusedGeoData()
#7 src/XF/Job/Cron.php(37): DigitalPoint\Cloudflare\Cron\CleanUp::runHourlyCleanUp(Object(XF\Entity\CronEntry))
#8 src/XF/Job/Manager.php(260): XF\Job\Cron->run(9.9802)
#9 src/addons/SV/SlowQueryLogger/XF/Job/Manager.php(34): XF\Job\Manager->runJobInternal(Array, 9.9802)
#10 src/XF/Job/Manager.php(202): SV\SlowQueryLogger\XF\Job\Manager->runJobInternal(Array, 9.9802)
#11 src/XF/Job/Manager.php(86): XF\Job\Manager->runJobEntry(Array, 9.9802)
#12 job.php(43): XF\Job\Manager->runQueue(false, 10)
#13 {main}

Request state

array(4) {
  ["url"] => string(15) "/***/job.php"
  ["referrer"] => string(81) "https://www.***.net/***/konu/toplam-5-bin-tlye-ekipman-oenerisi.3930172/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(0) {
  }
}
Unfortunately, there isn't a realistic way to make that query faster. It's one of the reasons it's decoupled from the user interface (doesn't slow down users, runs in a cron task only).

It's searching for records without a matching record in a different table via a join, so it's not able to use a table index. The only options you have to not end up with a slow query in that cron task is:
  • Don't use the Cloudflare geotargetting feature (can be disabled under Options -> External service providers -> Log IP address locations
  • Alternately, you could choose to not clean up orphaned records and just leave them (they don't hurt anything, they just take space in your database) by disabling the Hourly clean up cron task for this addon. You could also run it less often than hourly... like monthly or something if you'd rather use it, but not end up with a slow query every hour.
 
Owww. This looks nice! I've signed up for early access.
 
Owww. This looks nice! I've signed up for early access.
Ya, I’d like it more if it didn’t cost per email sent though.
 
Email Sending will require a paid Workers subscription, and we'll be charging based on messages sent.
Hopefully they will have similar but cheaper packages like Amazon SES. i.e. cents per 1000 emails.
When you sign up for the private beta they ask you what you are currently paying and where. Most likely they will want to offer a competitive package deal.

BTW: this week I received an email from CF advertising the use of their new Workers to serve CDN/R2 content to logged in users following permissions. While it was not clear to me how that would work, it sounded like something that could be useful as an alternative to presigned URLs for R2. Did you get the same email and do you think this is useful for XF or WP?
 
Hopefully they will have similar but cheaper packages like Amazon SES. i.e. cents per 1000 emails.
When you sign up for the private beta they ask you what you are currently paying and where. Most likely they will want to offer a competitive package deal.

BTW: this week I received an email from CF advertising the use of their new Workers to serve CDN/R2 content to logged in users following permissions. While it was not clear to me how that would work, it sounded like something that could be useful as an alternative to presigned URLs for R2. Did you get the same email and do you think this is useful for XF or WP?
I didn’t get the email, but I assume you would just use Workers with their R2 API. If that’s the case, doesn’t seem like much upside (can already do that with XenForo being the API client without per request Worker costs).
 
I had the same email from CF this week, seemed to be general info on setup and tweaking of edge caching to better fit individual use cases and speed up page loads reduce server load etc, didnt look into it properly but i just assumed it was aimed to push you into or closer to the paid tiers ?
 
The issue here is we need to do server-side permission checking for users for the attachments. So you can’t just make all attachments blindly public like we do with avatars. And that’s the problem… can’t avoid it unless you wanted to do away with user group permissions for attachments.
It would be awesome if a worker could be used for this, so that we no longer need presigned URL's (slow due to HTTP/1)
This seems to be what they were implying in the email.
A major reason for using R2 is speed, but with HTTP/1 that's out of the window.
 
This might be a stupid question, but just looking to verify - this plugin changes the underlying filesystem for the XenForo calls when you configure the R2 buckets to store data.

This suggests that certainly the internal_data directory still gets served out of your server(s) in order to apply all relevant permissions for things like full size attachments. The server(s) are just using R2 as a data storage device.

Does that hold true also for the data directory, or do those assets actually get served directly to the client from R2?
 
It can, but you would need to enable it (installing addon doesn’t make it happen just from installing). R2 can be used for data and/or internal_data folders, keeping permission checking intact.
 
Back
Top Bottom