Checkout zawieszał się na kroku wyboru dostawy – spinner kręcił się w nieskończoność. Klienci nie mogli przejść dalej. Problem dotyczył 100% użytkowników na wszystkich przeglądarkach. Czas diagnozy: 2 godziny, naprawy: 20 minut.
PHP 8.1 i 8.2 przyniosły named arguments i first-class callables – dwie funkcje które zmieniają sposób pisania kodu. Named arguments eliminują „argument order confusion” i poprawiają czytelność wywołań funkcji z wieloma parametrami. First-class callables zastępują Closure::fromCallable() i [$this, 'method'] czystą składnią func(...).
Produkt pokazywał „In Stock” na stronie produktu mimo że rzeczywiście nie było go na stanie. Klienci składali zamówienia na produkt który nie mógł zostać zrealizowany. Dopiero przy tworzeniu shipmentu pojawiał się błąd. Problem dotyczył produktów konfigurowalnych z MSI. Czas naprawy: 4 godziny.
DDEV to wygodne narzędzie ale nie jedyna droga. Własny stack Docker Compose daje pełną kontrolę: dokładnie te wersje usług których potrzebujesz, własna sieć, integracja z CI/CD, możliwość wdrożenia na dowolnym serwerze bez zmian. Pokażę minimalny ale kompletny stack dla Magento 2 z PHP 8.4, MariaDB 10.6, Redis, OpenSearch i nginx.
Sklep z konfiguracją multi-store (5 sklepów, 3 waluty) zaczął pokazywać błędne ceny – cena w euro pojawiała się na sklepie w złotówkach i odwrotnie. Problem pojawił się po dodaniu nowego sklepu i dotyczył tylko produktów z regułami cen. Czas naprawy: 6 godzin.
Wzorzec Decorator pozwala dynamicznie dodawać zachowanie do obiektu bez modyfikacji jego klasy i bez dziedziczenia. Każdy dekorator opakowuje oryginalny obiekt i rozszerza lub modyfikuje jego działanie. W PHP i Magento 2 to jeden z najczęściej stosowanych wzorców – system pluginów Magento to de facto Decorator zaimplementowany przez framework DI.
Konto administratora zostało zablokowane po ataku słownikowym – 10 000 prób logowania w ciągu godziny. Magento po 6 nieudanych próbach blokuje konto na 30 minut. Problem: atakujący ciągle resetował licznik przez zmianę IP, a prawdziwy admin nie mógł się zalogować. Czas naprawy: 1 godzina.
Union-Find (Disjoint Set Union) to struktura danych do zarządzania zbiorami rozłącznymi. Umożliwia dwie operacje w czasie niemal O(1): sprawdzenie czy dwa elementy należą do tego samego zbioru (Find) i połączenie dwóch zbiorów (Union). Algorytm pojawia się w problemach grafowych, wykrywaniu cykli i grupowaniu elementów. W Magento 2 przydaje się przy łączeniu zduplikowanych klientów i produktów.
Cron Magento 2 przestał działać – zalegało ponad 50 000 niezrealizowanych jobów w tabeli cron_schedule. Emaile transakcyjne nie wychodziły, indeksery nie aktualizowały się, reguły cenowe nie odświeżały. Sklep działał normalnie dla klientów ale „od środka” był zamrożony. Czas naprawy: 3 godziny.
Sklep który nie wytrzymuje szczytu ruchu traci pieniądze w najlepszym możliwym momencie. Black Friday, Cyber Monday, wyprzedaże sezonowe, wysyłka newslettera do 100 000 subskrybentów – to momenty kiedy ruch w ciągu godziny może wzrosnąć 10-krotnie. Przygotowanie do szczytu to nie kwestia „czy”, ale „kiedy”.
