Naar de inhoud
Inzichten

Advanced Serializing met PHP

keynote

Michelle kreeg de eer om een van de eerste 3 tracks na Cal Evans zijn key note vol te spreken. Ze sprak over haar moeilijke weg naar het serialiseren van gegevens en hoe zij en haar team de perfecte oplossing voor hun project hebben bedacht. Voor wie niet vertrouwd is met het concept, is serialiseren het omzetten van je data in een request output formaat zoals JSON of XML en deserialisatie andersom.

Symfony serializer

Performance issues

Voor een grote retailer in Zwitserland, gebruikte Michelle de bekende JMS-serializer. Dit bleek jarenlang een knelpunt te zijn in hun toepassing, omdat ze problemen ondervonden met de prestaties. Michelle ontwierp een oplossing die resulteerde in een algemene prestatiewinst van 55%.

Om de bottleneck te vinden werd gebruik gemaakt van Blackfire. Hiernaast zie je een screenshot van een JMS-methode die 60.000 keer in één keer wordt aangeroepen.

JMS Serializer blackfire

Oplossingen?

Er zijn veel oplossingen geprobeerd: JMSSymfony serializer, Better serializer en veel andere PHP-serializers. Dat zijn allemaal geweldige bibliotheken, maar geen van hen toonde enige verbeteringen. Tegen die tijd accepteerde het team om te leven met deze prestatiedrain totdat een nieuwe GoLang ontwikkelaar zich aansloot.
Hij werkte aan een oplossing in GoLang: Sheriff. De eerste resultaten waren veelbelovend. Om de huidige JMS-annotaties te hergebruiken, heeft Liip een bibliotheek gemaakt voor het genereren van Go structs met behulp van Sheriff uit PHP modellen. En om het eindelijk te laten werken met de PHP applicatie werd Goridge gebruikt. Goridge stelt je in staat om Go servicemethoden aan te roepen vanuit PHP.

Deze GO + PHP aanpak was geweldig en de applicatie had een enorme snelheidsboost. Maar, PHP had geen eerlijke kans. Dus besloot het team om de manier waarop GO serialisatie gebruikt te implementeren in hun eigen open source PHP-bibliotheek: liip/serializer.

liip/serializer

Deze open source library genereert PHP code op basis van de opgegeven PHP-modellen. Er wordt een apart bestand gegenereerd voor elke combinatie van versies en serializer-groepen om alle logica te verplaatsen naar de stap van de codegeneratie. Let op, ze gebruiken twig om PHP-bestanden te genereren! Door het genereren van deze bestanden op voorhand versnellen ze de applicatie. Het werkt hetzelfde als JMS, dus het moet gemakkelijk te vervangen zijn.

Gedachten bij deze sessie

Het is altijd leerzaam om te horen hoe anderen de problemen die ze tegenkomen benaderen. Naar mijn mening mag het wat dieper ingaan op de serializer en wat de verbeteringen precies zijn, want dat deel was erg interessant.

Meer inzichten

  • Lightning Talks: De nieuwe rol van AI in development

    Tijdens onze laatste Lightning Talks stond één vraag centraal: Hoe kan AI ons helpen om dit proces slimmer, sneller en betrouwbaarder te maken, zonder onze menselijke expertise te vervangen?

    Lightning Talks: De nieuwe rol van AI in development
  • Lightning Talks: Tickets die vertrouwen opbouwen & ChatGPT als analyse-assistent

    Twee onderwerpen die op het eerste gezicht ver uit elkaar liggen, maar toch dezelfde rode draad delen: bouwen aan vertrouwen en kwaliteit.

    Lightning Talks: Tickets die vertrouwen opbouwen & ChatGPT als analyse-assistent
  • Codana Lighting Talks | EAA Deadline & AI Code Editors

    De EAA-deadline van 2025 is voorbij. Wat nu? Lees onze analyse van de accessibility-wet en een vergelijking van 4 AI code assistenten. 

    Codana Lighting Talks | EAA Deadline & AI Code Editors
  • PHPverse 2025: Onze Inzichten en Takeaways

    Onze recap van PHPverse 2025! Ontdek wat we geleerd hebben over FrankenPHP, Symfony, Laravel, AI en de toekomst van PHP.

    PHPverse 2025: Onze Inzichten en Takeaways
  • De European Accessibility Act (EAA): Wat betekent dit voor jou?

    In deze blog zetten we de belangrijkste vragen en antwoorden op een rij: wat houdt de EAA precies in, wie moet eraan voldoen, en wat betekent dat voor jouw website of webshop? 

    De European Accessibility Act (EAA): Wat betekent dit voor jou?
  • SymfonyCon 2024: code in harmonie

    Editie 2024 van SymfonyCon vond plaats in het prachtige Wenen, dus een van onze experts ging ter plaatse. Even de nachttrein op, wat cultuur opsnuiven, en dan: volop focussen op twee dagen vol Symfony. Onze inzichten lees je in dit verslag! 

    SymfonyCon 2024: code in harmonie