Systems | Development | Analytics | API | Testing

Performance Benchmark Report Q1 2025 for Shopware 6

How does your Shopware 6 store’s PHP backend performance compare to other operators of Shopware in general? To answer this question, we have aggregated and anonymized performance data from over 150 Shopware 6 stores over the last quarter and computed benchmark numbers to compare to for the most important page types: Product details, Category, Search, and Homepage.

Tideways 2025.1 Release

For our first Release in 2025, we have cooked up more precise performance insights for you and can now, with Automatic Bottleneck Detection, serve you bottlenecks on a silver platter including recipes on how to fix them. Work on several improvements, like Native Worker Support in the PHP Extension, has kept us busy over the winter. A series of instrumentation improvements has chased away the winter blues and is now making way for a spring full of user-friendliness.

Thank you for 2024

The year 2024 was special for us in several respects. It’s been a decade since the unveiling of Tideways’ predecessor, and we’ve come a long way since then. We would like to express gratitude to our customers, partners, colleagues, friends, and family for their ongoing support and dedication. Without you, we wouldn’t be where we are today. We are particularly pleased to be able to welcome many new partners this year.

Using Cache-Control headers in Laravel for HTTP caching with Cloudflare

We recently helped our customer Holocafé prepare its Laravel application for a TV appearance on the German edition of Dragons’ Den (Höhle der Löwen) and the corresponding peak in traffic. The primary change was to utilize Cloudflare as an HTTP reverse proxy to cache the main page of the site and a few other mostly static pages that users were most likely to click on. The expectation was that 80-90% of the curious users could be served with pages from the HTTP cache.

PHP 8.4 improves Closure Naming for simplified debugging

In applications that use closures excessively, understanding stack traces as part of the debugging experience has historically been complicated by the fact that the names of closures did not include the source location. In a PHP stack trace, whenever a frame was represented by a closure, it only contained the reference {closure} and the namespace the closure was declared in, leading to all closures within a namespace looking identical.

Using Composer Patches to fix Performance in Third-Party PHP Libraries such as Symfony ErrorHandler

Every so often, a careful profiling analysis of your application detects the bottleneck in third-party code and there is little remedy for you to override or change that code. In this blog post I want to present a solution to fixing performance problems in third-party libraries by using the composer patches plugin. I use the the Symfony ErrorHandler as an example.

Tideways 2024.3 Release

We strive to improve clarity and user-friendliness, and have thus focused our efforts on several features that align with this objective. Our new Sidebar Menu, the Release Tracking Feature and an increased comparison range for Releases and Markers as well as the possibility to show error messages in notifications all fall into this category. Summary.

Tideways joins the Open Source Pledge

Tideways is joining the Open Source Pledge because we want to make a public commitment on our various open source contributions. Not only do we rely on open source software in our product Tideways, we are also building our business on top of the open source language PHP and its continued success. The mission of the recently started Open Source Pledge initiative is to establish a new social norm in the tech industry of companies paying Open Source maintainers.

PHP 8.4 Property Hooks: Can we get rid of getters/setters now? A benchmark.

The upcoming PHP 8.4 release will include the brand-new feature “property hooks”, a mechanism to add logic to a class property when read from or written to. One benefit of this feature is that you do not need to protect property access with a private property and public getter/setter methods anymore. You can find out how this feature works in the RFC and other places, but in the spirit of this blog we want to focus solely on the performance implications.

Choosing a PHP Library based on Performance

Sometimes, performance is the primary requirement when you are picking a third-party library to solve a task in your application. For CPU intensive work, there are often similar alternatives that you can choose from: To find out which one of them is more performant for your use-case, you can set up an experiment with microtime/hr_time calls and run them against each other. But: this provides fewer insights than running your tests directly with a Profiler such as XHProf or Tideways!