PHP si blocca in attesa di exec per restituire i risultati di comando mysql wget +

StackOverflow https://stackoverflow.com/questions/890083

  •  23-08-2019
  •  | 
  •  

Domanda

Related: vedi qui

Ho questo comando:

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

Il comando sopra funziona bene, però PHP attende il video per completare il download prima di passare al successivo download. La riga seguente, però, manda il download in background, che è quello che sto cercando di realizzare dalla linea precedente.

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

Come posso fare per cambiare la prima riga sopra per inviare il download sullo sfondo?

È stato utile?

Soluzione

Devi fare si utilizza e di inviare il processo in secondo piano e che si reindirizzare tutto l'output. Quindi è necessario aggiungere

> /dev/null 2>&1 & 

alla fine del vostro comando. Così si dovrebbe finire con qualcosa di simile:

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

[Modifica]

Per fare cosa più semplice, è anche possibile spostare il wget e l'aggiornamento ad un altro file php che si sarebbe chiamata con exec. Così si finirebbe solo con

exec("php NewFile.php > /dev/null 2>&1 &"); 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top