Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP Internals: Primeiros Passos - PHP Community Summit 2019

Adiel Cristo
September 26, 2019

PHP Internals: Primeiros Passos - PHP Community Summit 2019

Amamos o PHP e a facilidade que é trabalhar com a linguagem e seu ecossistema, mas alguma vez você já se perguntou o que tem debaixo do capô?

Nesta palestra teremos uma visão geral do funcionamento interno do PHP. Veremos quais são as estruturas básicas, como funciona a pipeline de execução dos scripts, e como podemos acompanhar o que acontece quando rodamos o código.

Adiel Cristo

September 26, 2019
Tweet

More Decks by Adiel Cristo

Other Decks in Programming

Transcript

  1. Globalcode – Open4education 2 Agenda ✔ Quais os Motivos? ✔

    Por Onde Começar? ✔ Arquitetura ✔ Tipos Internos ✔ Extensões ✔ Compilando o PHP
  2. Globalcode – Open4education 3 Quais os Motivos? ✔ Obter uma

    versão ainda em desenvolvimento ✔ Corrigir um bug ✔ Implementar uma nova feature ✔ Criar ou modificar uma função ✔ Criar ou modificar uma extensão ✔ Modificar a linguagem
  3. Globalcode – Open4education 4 Por Onde Começar ✔ A linguagem

    C é um requisito?! ✔ Documentação ✔ Listas de desenvolvedores ✔ Desenvolvimento ✔ Políticas!!
  4. Globalcode – Open4education 5 Arquitetura do PHP ✔ PHP SAPI

    ✔ PHP Core ✔ Zend Engine ✔ Extensões ✔ Código do Usuário ✔ TSRM – Thread Safe Resource Manager
  5. Globalcode – Open4education 6 PHP Server API ✔ Responsável pela

    comunicação externa ✔ Usada para comunicação com servidores ✔ Usada também pelo php-cli
  6. Globalcode – Open4education 7 PHP Core ✔ Núcleo do PHP

    ✔ Funções agrupadas na extensão default
  7. Globalcode – Open4education 8 Zend Engine ✔ Componentes ✔ Zend

    Compiler ✔ Zend Executor ✔ Zend OPCache
  8. Globalcode – Open4education 9 TSRM – Thread Safe Resource Manager

    ✔ Gerencia recursos em ambientes multithread ✔ Habilitado através do parâmetro --enable-maintainer-zts ✔ Limitações: ✔ Funciona apenas a nível de requisições
  9. Globalcode – Open4education 11 Arquitetura do PHP TSRM Código do

    Usuário Extensões PHP Core Zend Engine PHP SAPI
  10. Globalcode – Open4education 12 Fluxo de Execução ✔ zend_module_entry ✔

    PHP_MINIT ✔ PHP_MSHUTDOWN ✔ PHP_RINIT ✔ PHP_RSHUTDOWN
  11. Globalcode – Open4education 13 PHP_MINIT ✔ Executada quando a extensão

    é carregada ✔ Usada para tarefas que independem das requisições
  12. Globalcode – Open4education 14 PHP_MSHUTDOWN ✔ Executada quando a extensão

    é descarregada ✔ Usada para limpar a casa, fechar ou excluir recursos ainda em memória
  13. Globalcode – Open4education 15 PHP_RINIT ✔ Executada antes de cada

    requisição ✔ Usada para tarefas que dependem das requisições ✔ Inicialização de recursos para a requisição
  14. Globalcode – Open4education 16 PHP_RSHUTDOWN ✔ Executada ao final de

    cada requisição ✔ Usada para tarefas que dependem das requisições ✔ Finalização de recursos da requisição
  15. Globalcode – Open4education 17 ✔ Zvals ✔ Strings ✔ Resources

    ✔ HashTables ✔ Funções ✔ Objetos e Classes Tipos Internos
  16. Globalcode – Open4education 18 ✔ Representa um valor qualquer no

    PHP ✔ Provavelmente é a estrutura mais utilizada ✔ Permite a mudança de tipo em tempo de execução Zvals
  17. Globalcode – Open4education 20 ✔ Módulos do PHP ✔ Podem

    implementar um conjunto de funcionalidades ✔ Podem ser usadas como interface entre o PHP e uma biblioteca externa, como o MySQL Extensões
  18. Globalcode – Open4education 27 Referências (Desatualizadas) Apenas para manutenção ou

    upgrade do PHP 5! Extending and Embedding PHP Sara Golemon