O PHP tem controle de emprego como Bash?
-
27-09-2019 - |
Pergunta
O PHP suporta algo como Ampersand em Bash (bifurcação)? Digamos que eu queria usar o CURL em 2 páginas da web simultaneamente, para que o script não precise esperar antes do primeiro comando dos finlandeses, como alguém poderia conseguir isso no PHP? Algo assim em Bash:
curl www.google.com &
curl www.yahoo.com &
wait
Solução
O PHP suporta algo como Ampersand em Bash (bifurcação)?
Não. Veja as outras respostas, embora eu aponte que a extensão PCNTL seja apenas o Unix.
... como alguém poderia conseguir isso em PHP?*
O CURL suporta executando vários downloads simultaneamente.
Outras dicas
Você pode usar popen
ou proc_open
Para abrir um processo e deixá -lo funcionar em segundo plano, mas não há suporte ao idioma para operações em segundo plano como existe para bash
(que foi feito para executar tarefas, de qualquer maneira; o PHP foi feito para scripts).
Usando proc_open, você pode usar proc_get_status
saber quando os processos são encerrados. Receio que não haja wait
equivalente.
Você pode escrever métodos assíncronos, se realmente quiser, mas é muito trabalho e provavelmente uma terrível ideia de design se estiver usando o PHP.
Algum tipo de mecanismo de filas é frequentemente preferível. Gearman é um mecanismo de fila de código aberto que você pode usar. Eu também tenho uma postagem no blog na fila de trabalho do Zend Server que fala sobre executar tarefas de forma assíncrona Você faz fila? Introdução à fila de trabalho do Zend Server.
Você também pode usar algo como as classes de fila da estrutura Zend para implementar alguns dos trabalhos assíncronos. Zend_queue