SlideShare a Scribd company logo
1 of 12
Download to read offline
PHP em background



Muito se debate sobre a possibilidade do PHP
executar threads. Vamos descobrir formas
simples de como rodar processos em
background com total controle sobre eles.
Motivos para usar

●Executar processos sem necessidade de interação
com usuário.
● Compartilha o mesmo espaço de memória.


 Exemplos de uso:
● Processamento de grandes arquivos em

background
● Processos que necessitam ficar consumindo um

webservice
●Robôs para coleta de dados em sites
PHP – Process Control Extensions
●   Eio                                   Manual do PHP:
                                 extensões para controle de processo
●   Expect
●   Libevent
●   PCNTL
●   POSIX
●   Program Execution
●   pthreads
●   Shared Memory
●   Semaphore

     OBS: para utilizar pthreads é preciso recompilar o php com:
     --enable-maintainer-zts
     OBS²: pthreads só funcionam no PHP >= 5.3
IPC - Inter-Process Communication
          comunicação entre os processos

    Possibilidade de troca de informações entre processos de
    maneira assíncrona.


    Algumas formas de implementação de IPC:

●   Arquivos em disco
●   Banco de dados
●   Memória compartilhada
●   Socket / SOAP
Comunicação entre processos
              Semaphore
 ●   Acesso a área de partilha de dadospor outras
     linguagens/programas (como Perl, C, …)
 ●   Variáveis globais de
                                              Manual do PHP: Semaphore
     troca de dados.




Conselho: Não use drogas, aposente a Janela
     seja livre! Evite dores de cabeça.
Como fazer?
LEIA O MANUAL!!!!
     http://www.php.net
Processo em background

●   Linux
    php process.php &
●   Windows
    start /b “php process.php”


            OBS: coloque no crontab ou no agendador de tarefas
            um script para verificar, de x em x minutos, se o
            processo está em execução (veremos um exemplo)
Iniciando processo pelo PHP




                                             Manual do PHP:
                                          execução de programas
●   Apenas executa o script process.php
    se ele já não estiver em execução
●   Coloca o script process.php
    em background
Processo eterno
3 formas diferentes:




Dica: coloque um sleep() ou um
usleep() para evitar sobrecarga
do processador
Mão na massa
                       GIT - exemplo



Agora vamos ver os
códigos em execução!
Links - Contato
<?php
echo "
Vitor Mattos

http://www.slideshare.net/vitormattos
https://github.com/vitormattosrj

vitor.mattos@phprio.org
";
?>
          FIM
E viveram felizes para sempre!

More Related Content

What's hot

Escondendo um arquivo .rar em uma foto
Escondendo um arquivo .rar em uma fotoEscondendo um arquivo .rar em uma foto
Escondendo um arquivo .rar em uma fotoWagner Kinera
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPAndréia Santos
 
Php Visao Geral Svs
Php Visao Geral SvsPhp Visao Geral Svs
Php Visao Geral Svscristhianobv
 
Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Peter Mello
 
Shell Script - Aula 01
Shell Script - Aula 01Shell Script - Aula 01
Shell Script - Aula 01Olival Paulino
 
Vagrant uma ferramenta realmente útil e versátil
Vagrant   uma ferramenta realmente útil e versátilVagrant   uma ferramenta realmente útil e versátil
Vagrant uma ferramenta realmente útil e versátilWanderlei Silva do Carmo
 
Single Packet Authorization
Single Packet AuthorizationSingle Packet Authorization
Single Packet AuthorizationLeandro Almeida
 
Introdução ao Node.js
Introdução ao Node.jsIntrodução ao Node.js
Introdução ao Node.jsEdgar Eler
 
Lab so-abertos-unidade14
Lab so-abertos-unidade14Lab so-abertos-unidade14
Lab so-abertos-unidade14Leandro Almeida
 
Introdução ao CMake
Introdução ao CMakeIntrodução ao CMake
Introdução ao CMakePaulo Remoli
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxLuiz Francisco Bozo
 
Introdução ao php - O que é e suas características
Introdução ao php - O que é e suas característicasIntrodução ao php - O que é e suas características
Introdução ao php - O que é e suas característicasgbpf
 
Proteção de pendrive
Proteção de pendriveProteção de pendrive
Proteção de pendrivericardo da luz
 
Apresentação php
Apresentação phpApresentação php
Apresentação phpwilliameier
 

What's hot (20)

Desenvolvendo com IONIC
Desenvolvendo com IONICDesenvolvendo com IONIC
Desenvolvendo com IONIC
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Javascript
JavascriptJavascript
Javascript
 
Escondendo um arquivo .rar em uma foto
Escondendo um arquivo .rar em uma fotoEscondendo um arquivo .rar em uma foto
Escondendo um arquivo .rar em uma foto
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHP
 
Php Visao Geral Svs
Php Visao Geral SvsPhp Visao Geral Svs
Php Visao Geral Svs
 
Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)
 
Trabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQLTrabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQL
 
Shell Script - Aula 01
Shell Script - Aula 01Shell Script - Aula 01
Shell Script - Aula 01
 
Vagrant uma ferramenta realmente útil e versátil
Vagrant   uma ferramenta realmente útil e versátilVagrant   uma ferramenta realmente útil e versátil
Vagrant uma ferramenta realmente útil e versátil
 
Single Packet Authorization
Single Packet AuthorizationSingle Packet Authorization
Single Packet Authorization
 
Introdução ao Node.js
Introdução ao Node.jsIntrodução ao Node.js
Introdução ao Node.js
 
Lab so-abertos-unidade14
Lab so-abertos-unidade14Lab so-abertos-unidade14
Lab so-abertos-unidade14
 
Introdução ao CMake
Introdução ao CMakeIntrodução ao CMake
Introdução ao CMake
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
 
Introdução às ferramentas cat por onde começar
Introdução às ferramentas cat   por onde começarIntrodução às ferramentas cat   por onde começar
Introdução às ferramentas cat por onde começar
 
Introdução ao php - O que é e suas características
Introdução ao php - O que é e suas característicasIntrodução ao php - O que é e suas características
Introdução ao php - O que é e suas características
 
Proteção de pendrive
Proteção de pendriveProteção de pendrive
Proteção de pendrive
 
Apresentação php
Apresentação phpApresentação php
Apresentação php
 

Similar to PHP em Background

Similar to PHP em Background (20)

CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
Guia php
Guia phpGuia php
Guia php
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
CentOS
CentOSCentOS
CentOS
 
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
 
Apostila básica de PHP
Apostila básica de PHPApostila básica de PHP
Apostila básica de PHP
 
Intro linux
Intro linuxIntro linux
Intro linux
 
Aprenda a programar python
Aprenda a programar pythonAprenda a programar python
Aprenda a programar python
 
Processos (Linux)
Processos (Linux)Processos (Linux)
Processos (Linux)
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila php
Apostila phpApostila php
Apostila php
 
Curso openmp
Curso openmpCurso openmp
Curso openmp
 
Gestao de Memoria_SLIDE.pptx
Gestao de Memoria_SLIDE.pptxGestao de Memoria_SLIDE.pptx
Gestao de Memoria_SLIDE.pptx
 
Como migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxComo migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para Linux
 

More from Vitor Mattos

Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017Vitor Mattos
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency managerVitor Mattos
 
Contribuindo e criando software livre
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livreVitor Mattos
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasVitor Mattos
 
Que oportunidades me encontrem!
Que oportunidades me encontrem!Que oportunidades me encontrem!
Que oportunidades me encontrem!Vitor Mattos
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
 
BDD: torne viva a documentação de seus sistemas
BDD: torne viva a documentação de seus sistemasBDD: torne viva a documentação de seus sistemas
BDD: torne viva a documentação de seus sistemasVitor Mattos
 
Xdebug seus problemas acabaram - TDC - PHPeste
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPesteVitor Mattos
 
Seja subversivo, faça testes
Seja subversivo, faça testesSeja subversivo, faça testes
Seja subversivo, faça testesVitor Mattos
 
Apresentação feedback cool
Apresentação feedback coolApresentação feedback cool
Apresentação feedback coolVitor Mattos
 
Melhor que whatsapp: telegram + php
Melhor que whatsapp: telegram + phpMelhor que whatsapp: telegram + php
Melhor que whatsapp: telegram + phpVitor Mattos
 
BDD + PHP = behat!
BDD + PHP = behat!BDD + PHP = behat!
BDD + PHP = behat!Vitor Mattos
 
Xdebug: Seus problemas acabaram!
Xdebug: Seus problemas acabaram!Xdebug: Seus problemas acabaram!
Xdebug: Seus problemas acabaram!Vitor Mattos
 

More from Vitor Mattos (14)

Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency manager
 
Contribuindo e criando software livre
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livre
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemas
 
Que oportunidades me encontrem!
Que oportunidades me encontrem!Que oportunidades me encontrem!
Que oportunidades me encontrem!
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 
BDD: torne viva a documentação de seus sistemas
BDD: torne viva a documentação de seus sistemasBDD: torne viva a documentação de seus sistemas
BDD: torne viva a documentação de seus sistemas
 
Xdebug seus problemas acabaram - TDC - PHPeste
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPeste
 
Seja subversivo, faça testes
Seja subversivo, faça testesSeja subversivo, faça testes
Seja subversivo, faça testes
 
Apresentação feedback cool
Apresentação feedback coolApresentação feedback cool
Apresentação feedback cool
 
Melhor que whatsapp: telegram + php
Melhor que whatsapp: telegram + phpMelhor que whatsapp: telegram + php
Melhor que whatsapp: telegram + php
 
BDD + PHP = behat!
BDD + PHP = behat!BDD + PHP = behat!
BDD + PHP = behat!
 
Xdebug: Seus problemas acabaram!
Xdebug: Seus problemas acabaram!Xdebug: Seus problemas acabaram!
Xdebug: Seus problemas acabaram!
 
JasperReports
JasperReportsJasperReports
JasperReports
 

PHP em Background

  • 1. PHP em background Muito se debate sobre a possibilidade do PHP executar threads. Vamos descobrir formas simples de como rodar processos em background com total controle sobre eles.
  • 2. Motivos para usar ●Executar processos sem necessidade de interação com usuário. ● Compartilha o mesmo espaço de memória. Exemplos de uso: ● Processamento de grandes arquivos em background ● Processos que necessitam ficar consumindo um webservice ●Robôs para coleta de dados em sites
  • 3. PHP – Process Control Extensions ● Eio Manual do PHP: extensões para controle de processo ● Expect ● Libevent ● PCNTL ● POSIX ● Program Execution ● pthreads ● Shared Memory ● Semaphore OBS: para utilizar pthreads é preciso recompilar o php com: --enable-maintainer-zts OBS²: pthreads só funcionam no PHP >= 5.3
  • 4. IPC - Inter-Process Communication comunicação entre os processos Possibilidade de troca de informações entre processos de maneira assíncrona. Algumas formas de implementação de IPC: ● Arquivos em disco ● Banco de dados ● Memória compartilhada ● Socket / SOAP
  • 5. Comunicação entre processos Semaphore ● Acesso a área de partilha de dadospor outras linguagens/programas (como Perl, C, …) ● Variáveis globais de Manual do PHP: Semaphore troca de dados. Conselho: Não use drogas, aposente a Janela seja livre! Evite dores de cabeça.
  • 7. LEIA O MANUAL!!!! http://www.php.net
  • 8. Processo em background ● Linux php process.php & ● Windows start /b “php process.php” OBS: coloque no crontab ou no agendador de tarefas um script para verificar, de x em x minutos, se o processo está em execução (veremos um exemplo)
  • 9. Iniciando processo pelo PHP Manual do PHP: execução de programas ● Apenas executa o script process.php se ele já não estiver em execução ● Coloca o script process.php em background
  • 10. Processo eterno 3 formas diferentes: Dica: coloque um sleep() ou um usleep() para evitar sobrecarga do processador
  • 11. Mão na massa GIT - exemplo Agora vamos ver os códigos em execução!
  • 12. Links - Contato <?php echo " Vitor Mattos http://www.slideshare.net/vitormattos https://github.com/vitormattosrj vitor.mattos@phprio.org "; ?> FIM E viveram felizes para sempre!