Première découverte de
Swoole ?
Julien Vinber
27 janvier 2021 - Meetup AFUP Montpellier
Julien Vinber
● Architecte technique chez CGI
● Coordinateur AFUP Montpellier
● Live pour Studi
● Mentor pour Openclassrooms
linkedIn :
https://www.linkedin.com/in/julienvinber/
Slack MTH : @julienvinber
Attention présentation découverte
Contexte
● Fait pour le web
● Performant
● Vrai modèle objet
● Simple à déployer
● Écosystème cohérent
● “Serverless” avant l’heure
● Évolue dans le bon sens
PHP le meilleur langage au monde ;)
● Gestion simpliste de la mémoire
● Uniquement une exécution prédictible (linaire) du code
Mais… Pas de traitement lourd.
● C’est la programmation la plus simple à concevoir et
appréhender
● Si on connaît l’état des variables et l’endroit où l’on se trouve
dans le code alors on peut prévoir le code qui sera exécuté
après.
Linaire ? Prédictible ?
Événements externes
● Les plus connus ce sont les
interfaces utilisateurs.
● C’est un évènement externe qui va
définir vers ou le code va aller.
Parallélisme
● On parle aussi de multi Thread
● C’est le fait que 2 portions de code
peuvent être exécutées en parallèle
sans s’interférer l’un l'autre.
C’est quoi alors du non prédictible?
● Mémoire : dans 100ms la mémoire et libérer.
● Linaire : cette complexité et déporter vers le serveur
web/navigateur
Pourquoi?
Solution?
https://www.php.net/manual/fr/book.pthreads.php
● Ajout de threads dans PHP par un dev de PHP
● 🤮. Dans l’idée c’est géniale, mais dans les faits c’est crade.
Il faut utiliser des static pour pouvoir avoir des ressources
différente entre thread
Pthreads
https://reactphp.org/
● Orienté événement
● Il vas simuler le moteur de JS
● Mémoire : cela reste de PHP, sauf que l’on n’aura pas fini dans 100 ms
● Cela permet, certes de gérer des évènements, mais pas de multidreads.
● Autant faire du JS
ReactPHP
https://symfony.com/doc/current/messenger.html
● Permet de déléguer l'exécution d’un bout de code à des worker
● Mémoire : cela reste du PHP. Mais avec le supervisor on peut
envisager faire quelque chose pour cela.
● Multi Threads : oui et non, on s’en approche, sans que cela soit
vraiment cela.
● Event : oui et non, ce n’est pas en natif, mais en bricolant un peu
on peut s’approcher de quelque chose.
Composant Messenger de Symfony
Swoole
https://www.swoole.co.uk/
● Reprends en partie l’idée de reactPHP mais il parle de
coroutine.
● C’est écrit en C++.
● Il ajoute une vraie couche de multiThread.
Swoole
Swoole :
Comprendre par l’exemple

Swoole Meetup AFUP¨Montpellier 27/01/2021

  • 1.
    Première découverte de Swoole? Julien Vinber 27 janvier 2021 - Meetup AFUP Montpellier
  • 2.
    Julien Vinber ● Architectetechnique chez CGI ● Coordinateur AFUP Montpellier ● Live pour Studi ● Mentor pour Openclassrooms linkedIn : https://www.linkedin.com/in/julienvinber/ Slack MTH : @julienvinber
  • 3.
  • 4.
  • 5.
    ● Fait pourle web ● Performant ● Vrai modèle objet ● Simple à déployer ● Écosystème cohérent ● “Serverless” avant l’heure ● Évolue dans le bon sens PHP le meilleur langage au monde ;)
  • 6.
    ● Gestion simplistede la mémoire ● Uniquement une exécution prédictible (linaire) du code Mais… Pas de traitement lourd.
  • 7.
    ● C’est laprogrammation la plus simple à concevoir et appréhender ● Si on connaît l’état des variables et l’endroit où l’on se trouve dans le code alors on peut prévoir le code qui sera exécuté après. Linaire ? Prédictible ?
  • 8.
    Événements externes ● Lesplus connus ce sont les interfaces utilisateurs. ● C’est un évènement externe qui va définir vers ou le code va aller. Parallélisme ● On parle aussi de multi Thread ● C’est le fait que 2 portions de code peuvent être exécutées en parallèle sans s’interférer l’un l'autre. C’est quoi alors du non prédictible?
  • 9.
    ● Mémoire :dans 100ms la mémoire et libérer. ● Linaire : cette complexité et déporter vers le serveur web/navigateur Pourquoi?
  • 10.
  • 11.
    https://www.php.net/manual/fr/book.pthreads.php ● Ajout dethreads dans PHP par un dev de PHP ● 🤮. Dans l’idée c’est géniale, mais dans les faits c’est crade. Il faut utiliser des static pour pouvoir avoir des ressources différente entre thread Pthreads
  • 12.
    https://reactphp.org/ ● Orienté événement ●Il vas simuler le moteur de JS ● Mémoire : cela reste de PHP, sauf que l’on n’aura pas fini dans 100 ms ● Cela permet, certes de gérer des évènements, mais pas de multidreads. ● Autant faire du JS ReactPHP
  • 13.
    https://symfony.com/doc/current/messenger.html ● Permet dedéléguer l'exécution d’un bout de code à des worker ● Mémoire : cela reste du PHP. Mais avec le supervisor on peut envisager faire quelque chose pour cela. ● Multi Threads : oui et non, on s’en approche, sans que cela soit vraiment cela. ● Event : oui et non, ce n’est pas en natif, mais en bricolant un peu on peut s’approcher de quelque chose. Composant Messenger de Symfony
  • 14.
  • 15.
    https://www.swoole.co.uk/ ● Reprends enpartie l’idée de reactPHP mais il parle de coroutine. ● C’est écrit en C++. ● Il ajoute une vraie couche de multiThread. Swoole
  • 16.