Pregunta

Relacionado: ver aquí

Tengo este comando:

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

El comando anterior funciona bien, sin embargo PHP espera a que el video para terminar la descarga antes de pasar a la siguiente descarga. La siguiente línea, sin embargo, envía la descarga en el fondo, que es lo que estoy tratando de lograr de la línea anterior.

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

¿Cómo hago para cambiar la primera línea arriba para enviar el archivo descargado en el fondo?

¿Fue útil?

Solución

Hay que hacer que se utiliza y enviar el proceso a un segundo plano y que permite redirigir todas las salidas. Así que hay que añadir

> /dev/null 2>&1 & 

al final de su comando. Por lo que debe terminar con algo como esto:

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 &");

[Editar]

Para hacer algo más sencillo, también puede mover el wget y la actualización a otro archivo PHP que ustedes llamarían con Exec. Por lo que podría terminar con un solo

exec("php NewFile.php > /dev/null 2>&1 &"); 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top