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!

PHP em Background

  • 1.
    PHP em background Muitose 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 ●Executarprocessos 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 – ProcessControl 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-ProcessCommunication 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.
  • 6.
  • 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 peloPHP 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 formasdiferentes: 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!