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.out
file.
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