nohup php file.php > /dev/null 2>&1 &
Le supérieur à (>
) dans des commandes comme celles-ci redirigent la sortie du programme quelque part. Dans ce cas, quelque chose est redirigé vers /dev/null
, et quelque chose est redirigé vers &1
Entrée, sortie et erreur standard
Il existe trois sources standard d'entrée et de sortie pour un programme. L'entrée standard provient généralement du clavier s'il s'agit d'un programme interactif ou d'un autre programme s'il traite la sortie de l'autre programme. Le programme imprime généralement sur la sortie standard et imprime parfois sur l'erreur standard. Ces trois descripteurs de fichiers (vous pouvez les considérer comme des "canaux de données") sont souvent appelés STDIN, STDOUT, and STDERR
.
Parfois, ils ne sont pas nommés, ils sont numérotés ! Les numérotations intégrées pour eux sont 0, 1, and 2
, dans cet ordre. Par défaut, si vous ne nommez pas ou ne numérotez pas un explicitement, vous parlez de STDOUT
.
la commande ci-dessus redirige la sortie standard vers /dev/null
, qui est un endroit où vous pouvez vider tout ce que vous ne voulez pas, puis rediriger l'erreur standard vers la sortie standard (vous devez mettre un &
devant la destination lorsque vous faites cela).
La courte explication est donc "toute la sortie de cette commande doit être poussée dans un trou noir". C'est un bon moyen de faire en sorte qu'un programme soit vraiment silencieux !
&
à la fin met la commande en arrière-plan.
réf :https://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/
Êtes-vous sûr que le script ne contient aucune erreur ? C'est ce qui fait normalement "l'exécution se termine très rapidement ".
Tout d'abord, ajoutez :
error_reporting(E_ALL); ini_set('display_errors', 1);
en haut de votre script pour afficher les erreurs qu'il peut avoir, alors vous pouvez utiliser :
nohup php filename.php &
nohup exécute une commande même si la session est déconnectée ou si l'utilisateur se déconnecte.
OU
nohup php filename.php >/dev/null 2>&1 &
Comme ci-dessus mais ne crée pas
nohup.out
fichier.
Vous pouvez aussi utiliser:
ignore_user_abort(1);
Définir si une déconnexion du client doit interrompre l'exécution du script
`set_time_limit(0);`
Limite le temps d'exécution maximal du script, dans ce cas il s'exécutera jusqu'à ce que le processus se termine ou que le processus apache redémarre.
#NotesLe php
et le filename.php
les chemins peuvent être fournis sous forme de chemin complet , au lieu de php
et filename.php
, vous pouvez utiliser /usr/bin/php
et /full/path/to/filename.php
.
Le chemin complet est recommandé pour éviter fichier introuvable erreurs.
le processus peut être fermé lorsque votre session est fermée.
essayez d'utiliser nohup php filename.php