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
Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top