nohup php file.php > /dev/null 2>&1 &
Il maggiore di (> ) in comandi come questi reindirizzano l'output del programma da qualche parte. In questo caso, qualcosa viene reindirizzato a /dev/null e qualcosa viene reindirizzato a &1
Standard in entrata, in uscita ed errore
Esistono tre fonti standard di input e output per un programma. L'input standard di solito proviene dalla tastiera se si tratta di un programma interattivo o da un altro programma se sta elaborando l'output dell'altro programma. Il programma di solito stampa sull'output standard e talvolta stampa sull'errore standard. Questi tre descrittori di file (puoi pensarli come "tubi di dati") sono spesso chiamati STDIN, STDOUT, and STDERR .
A volte non hanno un nome, sono numerati! La loro numerazione predefinita è 0, 1, and 2 , in questo ordine. Per impostazione predefinita, se non nomini o numeri uno in modo esplicito, stai parlando di STDOUT .
il comando sopra sta reindirizzando l'output standard a /dev/null , che è un posto in cui puoi scaricare tutto ciò che non vuoi, quindi reindirizzare l'errore standard nell'output standard (devi inserire un & davanti alla destinazione quando lo fai).
La breve spiegazione, quindi, è "tutto l'output di questo comando dovrebbe essere spinto in un buco nero". Questo è un buon modo per rendere un programma davvero silenzioso!
& alla fine mette il comando in background.
riferimento:https://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/
Sei sicuro che lo script non contenga errori? Questo è ciò che normalmente fa sì che "l'esecuzione termini molto rapidamente ".
Innanzitutto, aggiungi:
error_reporting(E_ALL); ini_set('display_errors', 1);
all'inizio del tuo script per visualizzare eventuali errori che potrebbe avere, quindi puoi usare :
nohup php filename.php &
nohup esegue un comando anche se la sessione è disconnessa o l'utente si disconnette.
O
nohup php filename.php >/dev/null 2>&1 &
Come sopra ma non crea
nohup.outfile.
Puoi anche usare:
ignore_user_abort(1);
Imposta se una disconnessione del client deve interrompere l'esecuzione dello script
`set_time_limit(0);`
Limita il tempo massimo di esecuzione dello script, in questo caso verrà eseguito fino al termine del processo o al riavvio del processo apache.
#NotesIl php e il filename.php i percorsi possono essere forniti come percorso completo , invece di php e filename.php , puoi utilizzare /usr/bin/php e /full/path/to/filename.php .
Si consiglia il percorso completo per evitare file non trovato errori.
il processo potrebbe essere chiuso alla chiusura della sessione.
prova a usare nohup php filename.php