PHP Internals: Primeiros Passos - PHP Community Summit 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.

A725592dca6d199881b3187031f6d4d0?s=128

Adiel Cristo

September 26, 2019
Tweet

Transcript

  1. Globalcode – Open4education Adiel Cristo Setembro 2019 PHP Internals: Primeiros

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

    Por Onde Começar? ✔ Arquitetura ✔ Tipos Internos ✔ Extensões ✔ Compilando o PHP
  3. 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
  4. Globalcode – Open4education 4 Por Onde Começar ✔ A linguagem

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

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

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

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

    Compiler ✔ Zend Executor ✔ Zend OPCache
  9. 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
  10. Globalcode – Open4education 10 TSRM – Thread Safe Resource Manager

  11. Globalcode – Open4education 11 Arquitetura do PHP TSRM Código do

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

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

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

    é descarregada ✔ Usada para limpar a casa, fechar ou excluir recursos ainda em memória
  15. 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
  16. 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
  17. Globalcode – Open4education 17 ✔ Zvals ✔ Strings ✔ Resources

    ✔ HashTables ✔ Funções ✔ Objetos e Classes Tipos Internos
  18. 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
  19. Globalcode – Open4education 19 Zvals

  20. 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
  21. Globalcode – Open4education 21 Definindo uma Extensão

  22. Globalcode – Open4education 22 Compilando o PHP ✔ Baixe as

    dependências:
  23. Globalcode – Open4education 23 Compilando o PHP ✔ Baixe o

    código do PHP:
  24. Globalcode – Open4education 24 Compilando o PHP ✔ Configure e

    compile:
  25. Globalcode – Open4education 25 Compilando o PHP ✔ Verifique o

    executável:
  26. Globalcode – Open4education 26 Referências http://www.phpinternalsbook.com https://phpinternals.net/ https://www.php.net/manual/en/internals2.php https://www.php.net/get-involved.php https://nikic.github.io

    https://www.sammyk.me/compiling-php-from- source-writing-tests-for-php-source
  27. Globalcode – Open4education 27 Referências (Desatualizadas) Apenas para manutenção ou

    upgrade do PHP 5! Extending and Embedding PHP Sara Golemon
  28. Globalcode – Open4education 28 Links https://github.com/adielcristo https://twitter.com/adielcristo https://adiel.dev https://phpba.com.br Obrigado!!