PHP / Magento Dev Blog

  • Home

Magento 2.4.8 – PHP 8.4 support, Elasticsearch to OpenSearch migration, upgrade checklist

  • 0
Henryk Tews
Tuesday, 31 December 2024 / Published in Magento / Adobe Commerce

Magento 2.4.8 was released in April 2025 and is the most significant update in the 2.4.x line. PHP 8.4 support, dropping official Elasticsearch support in favour of OpenSearch, and a long list of dependency updates make this a mandatory upgrade for projects that want to stay on supported software. I show what actually changes and provide a practical upgrade checklist.

(more…)

LRU Cache – O(1) implementation with HashMap and doubly linked list, per-request cache

  • 0
Henryk Tews
Tuesday, 17 December 2024 / Published in Algorytmy

LRU Cache (Least Recently Used) is the caching strategy where the item accessed longest ago is evicted when the cache is full. The naive O(n) implementation is too slow for tight loops. A proper O(1) implementation requires combining a doubly linked list (access order) with a hash map (O(1) lookup). I implement it from scratch in PHP and show how it maps to the per-request in-memory cache pattern used in Magento 2.

(more…)

Redis Streams – Consumer Groups, pending messages, dead letter, Magento queue integration

  • 0
Henryk Tews
Tuesday, 03 December 2024 / Published in Magento / Adobe Commerce

Redis Streams is a data structure added in Redis 5.0 that combines the simplicity of a log with consumer groups and acknowledgement semantics. For Magento 2 it offers a robust alternative to RabbitMQ for message queuing: persistent messages, consumer groups, pending message redelivery, and dead letter handling – without the operational overhead of a dedicated AMQP broker.

(more…)

PHP 8.4 release – property hooks in production, asymmetric visibility, BcMath\Number, array_find

  • 0
Henryk Tews
Tuesday, 26 November 2024 / Published in PHP

PHP 8.4 was officially released on 21 November 2024. After the RC months I had code ready to merge the day it went stable. A month in production gives me a clear picture of what property hooks look like in real module code, where asymmetric visibility is actually useful versus where it is overkill, and how BcMath\Number compares to the traditional bcmath functions in practice.

(more…)

PWA Studio vs Hyvä vs Luma – honest TCO comparison and when to choose which

  • 0
Henryk Tews
Wednesday, 16 October 2024 / Published in Magento / Adobe Commerce

PWA Studio, Hyvä, and Luma are the three main frontend options for Magento 2. Each represents a fundamentally different architecture and development model. Choosing the wrong one is an expensive mistake that is hard to reverse. I give an honest comparison including Total Cost of Ownership, not just technical features.

(more…)

Docker Compose production – full Magento 2 stack, secrets, health checks, deployment

  • 0
Henryk Tews
Tuesday, 01 October 2024 / Published in Środowiska

Running Magento 2 in production with Docker Compose requires more than just copying the development setup. Secrets management, health checks, zero-downtime deployment, and log aggregation are the gaps between “works on my machine” and “runs reliably in production”. I show a complete production-grade docker-compose configuration with all these pieces in place.

(more…)

Bloom Filter – probabilistic structure, token blacklists, negative cache

  • 0
Henryk Tews
Tuesday, 17 September 2024 / Published in Algorytmy

A Bloom Filter is a probabilistic data structure that answers “is this element in the set?” with two possible answers: “definitely not” or “probably yes”. False positives are possible, false negatives are not. This makes it perfect for negative caching, token blacklists, and spam detection – cases where you need to quickly eliminate non-members before doing an expensive lookup.

(more…)

PHP 8.4 last RC – Lazy Objects, BcMath\Number, Dom\HTMLDocument

  • 0
Henryk Tews
Tuesday, 03 September 2024 / Published in PHP

PHP 8.4 final RC is here with three features that did not get enough attention in the preview posts. Lazy Objects let the DI container defer expensive object construction until first use – without manually writing Proxy classes. BcMath\Number finally gives PHP a clean API for arbitrary precision arithmetic. Dom\HTMLDocument brings proper HTML5 parsing to PHP’s DOM extension. I show all three in code.

(more…)

OpenTelemetry – distributed tracing, auto-instrumentation, Jaeger in DDEV

  • 0
Henryk Tews
Tuesday, 20 August 2024 / Published in Środowiska

OpenTelemetry is the emerging standard for distributed tracing, metrics, and logs. Where Blackfire shows you what is slow within a single PHP process, OpenTelemetry shows you what happens across multiple services – from the Magento web server through Redis, MySQL, and external APIs, to the queue consumer. I show auto-instrumentation setup, Jaeger in DDEV for viewing traces, and adding custom spans to your own code.

(more…)

Event Sourcing – Domain Events, Aggregate Root, Event Store, connecting with CQRS

  • 0
Henryk Tews
Tuesday, 06 August 2024 / Published in Wzorce projektowe

Event Sourcing is an architectural pattern where instead of storing the current state of an entity, you store the sequence of events that led to that state. The current state is always derived by replaying the events. Combined with CQRS it gives you a complete audit trail, time-travel debugging, and the ability to create new read models from historical data. I show the core concepts with PHP implementation and connect them to CQRS.

(more…)

  • 9
  • 10
  • 11
  • 12
  • 13

© 2026 Created by

TOP
Zarządzaj zgodą
Aby zapewnić jak najlepsze wrażenia, korzystamy z technologii, takich jak pliki cookie, do przechowywania i/lub uzyskiwania dostępu do informacji o urządzeniu. Zgoda na te technologie pozwoli nam przetwarzać dane, takie jak zachowanie podczas przeglądania lub unikalne identyfikatory na tej stronie. Brak wyrażenia zgody lub wycofanie zgody może niekorzystnie wpłynąć na niektóre cechy i funkcje.
Funkcjonalne Always active
Przechowywanie lub dostęp do danych technicznych jest ściśle konieczny do uzasadnionego celu umożliwienia korzystania z konkretnej usługi wyraźnie żądanej przez subskrybenta lub użytkownika, lub wyłącznie w celu przeprowadzenia transmisji komunikatu przez sieć łączności elektronicznej.
Preferencje
Przechowywanie lub dostęp techniczny jest niezbędny do uzasadnionego celu przechowywania preferencji, o które nie prosi subskrybent lub użytkownik.
Statystyka
Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do celów statystycznych. Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do anonimowych celów statystycznych. Bez wezwania do sądu, dobrowolnego podporządkowania się dostawcy usług internetowych lub dodatkowych zapisów od strony trzeciej, informacje przechowywane lub pobierane wyłącznie w tym celu zwykle nie mogą być wykorzystywane do identyfikacji użytkownika.
Marketing
Przechowywanie lub dostęp techniczny jest wymagany do tworzenia profili użytkowników w celu wysyłania reklam lub śledzenia użytkownika na stronie internetowej lub na kilku stronach internetowych w podobnych celach marketingowych.
  • Manage options
  • Manage services
  • Manage {vendor_count} vendors
  • Read more about these purposes
Zobacz preferencje
  • {title}
  • {title}
  • {title}