The admin panel timed out when trying to open the orders list. 30-second timeout. The database contained 500,000 orders accumulated over 5 years. Fix time: 3 hours.
A B2B shop was charging 23% VAT to customers from Germany and France who provided EU VAT numbers. Under the reverse charge principle, VAT should be 0% for EU businesses with a VAT number. The problem generated customer complaints and tax risk. Fix time: 8 hours.
After moving the shop to HTTPS, product images and CSS stylesheets stopped loading in Chrome. The console showed hundreds of Mixed Content errors. The shop looked broken. Fix time: 1 hour.
Dijkstra’s algorithm is a classic shortest path algorithm for weighted graphs with non-negative weights. It runs in O((V + E) log V) with a priority queue, where V is the number of vertices and E the number of edges. Practical applications include routing, GPS navigation, recommendation systems and network optimisation. I show a PHP implementation with a priority queue and two real usage examples.
The shop was generating duplicate orders – a customer clicked “Order” once but two identical orders were created with double payment. The problem affected ~2% of orders, mainly on slow internet connections. Fix time: 6 hours.
Customers could not find products through the search engine even though products were visible in categories. Searching by SKU, name and description returned no results. The problem grew over 2 weeks after migrating to a new server. Fix time: 2 hours.
Varnish was installed and configured, but every request was hitting PHP – hit rate was 0%. The server was overloaded despite Varnish. The problem was in wrong VCL configuration and session cookies. Fix time: 4 hours.
Fibers arrived in PHP 8.1 as a cooperative multitasking mechanism – the ability to suspend and resume a function at any point. These are not threads or processes – a Fiber runs in the same PHP thread but allows switching between tasks without blocking. I show how Fibers work, where they make sense, and how async libraries (ReactPHP, Amp) use them under the hood.
Importing 10,000 products through the admin panel ended with Allowed memory size exhausted after about 3,000 products. The import ran for 40 minutes without completing. Fix time: 3 hours.
Customers were not receiving order confirmations. The shop was sending emails from local sendmail which was being blocked by mail servers as spam. 95% of emails ended up in the Spam folder or were rejected. Fix time: 2 hours.
