Pergunta

Relacionado: ver aqui

Eu tenho este comando:

exec("(wget  -O http://domain/file.zip && mysql -u user -ppassword database -e \"UPDATE \\`table\\` SET \\`status\\` = 'live' WHERE \\`id\\` = '1234'\") & echo \$!");

O comando acima funciona bem, no entanto PHP aguarda o vídeo para download terminar antes de ir para a próxima download. A linha a seguir, no entanto, envia a transferência para o fundo, que é o que eu estou tentando alcançar a partir da linha anterior.

exec("wget -O http://domain/file.zip &>/dev/null & echo \$!");

Como faço para ir sobre como alterar a primeira linha acima para enviar a transferência para o fundo?

Foi útil?

Solução

Você tem que fazer você usa e para enviar o processo para o segundo plano e que você redirecionar toda a saída. Então, você precisa adicionar

> /dev/null 2>&1 & 

no final do seu comando. Portanto, você deve acabar com algo parecido com isto:

exec("(wget  -O http://domain/file.zip && mysql -u user -ppassword database -e \"UPDATE \\`table\\` SET \\`status\\` = 'live' WHERE \\`id\\` = '1234'\") echo \$! > /dev/null 2>&1 &");

[Edit]

Para fazer coisa mais simples, você também pode mover o wget e a atualização para outro arquivo php que você chamaria com exec. Então você iria acabar com apenas

exec("php NewFile.php > /dev/null 2>&1 &"); 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top