Nous allons parler aujourd’hui sur certaines choses qu’on fait tout le temps en faisant de développement php. Mais puisque ça passe en arrière-plan pas mal de gens ne se pose pas la question !!

  • Serveur HTTP ou Serveur Web : est un serveur servant des requêtes respectant le protocole HTTP, parmi les fonctionnalités est le traitement des requêtes HTTP,  Restriction des accès, transfert des requêtes
    • Apache HTTP Server de la Apache Software Foundation
    • Apache Tomcat de la Apache Software Foundation
    • Internet Information Services (IIS) de MicroSoft
    • Nginx de Igor Sysoev
    • NodeJs 
  • FASTCGI est un technique permettant la communication entre un serveur HTTP et un logiciel indépendant (PHP), c’est une évolution de Common Gateway Interface abrégée en CGI
    • CGI permet l’exécution d’un nouveau processus à chaque requête, chaque requête lance une nouvelle instance CGI, qui appellera le programme à exécuter.  Le binaire cgi recrée à chaque appel le contexte de l’environnement d’exécution (runtime) et ne permet pas de limiter le nombre de processus simultanées. Le nombre de processus simultanés sera donc dépendant du nombre de processus simultanés du serveur web.
    • Avec FASTCGI, les applications générant les pages dynamiques (PHP) peuvent se situer sur un ou des serveurs différents du ou des serveurs hébergeant le service HTTP.  Une variable est introduite permettant de déterminer le nombre min et max de processus CGI à exécuter, indépendamment du nombre de processus HTTP maximum
  • PHP-FPM (FastCGI Process Manager) : est une implémentation alternative à PHP FastCGI avec quelques fonctionnalités additionnelles particulièrement utiles pour les environnements à haute charge.
    • Gestion avancée des processus avec stop/start doux (graceful)  🙁 kill
    • Possibilité de démarrer des processus avec différents uid/gid/chroot/env
    • Journalisation stdout et stderr
    • Redémarrage d’urgence en cas de destruction accidentelle  du cache opcode
    • Fichier de configuration basé sur php.ini
    • ….
  • PHP est un langage interprété, à chaque demande d’exécution d’un script, PHP charge, analyse puis compile le code source en bytecode (OpCode) à l’aide d’un pré-compilateur avant de l’envoyer à l’interpréteur du langage pour exécution
    • phpvsjava
  • Dans le but d’optimiser les performances d’une application, il est demandé de mettre en place des systèmes de caches physiques ou en mémoire. Ces caches peuvent ainsi permettre de stocker diverses sorties telles que des pages HTML générées, des résultats de requêtes en base de données ou le bytecode des fichiers PHP  
    • schema_opcache

Nous allons continuer sur le même concept, à chaque fois on parle d’un sujet qu’on fait tout le temps mais on ne sait pas comment ça marche derrière