J'ai essayé le code de ligne de commande suivant pour exécuter un script php en arrière-plan.
php server.php &
Cela marche. Le problème est le suivant: si je ferme la fenêtre du terminal sur mon ordinateur, le script php s'arrête également. Je veux qu'il fonctionne "infini". C'est un serveur websocket, il doit donc fonctionner constamment.
Comment puis-je atteindre cet objectif?
Merci d'avance!
Edit: J'ai déjà trouvé la réponse (je suppose que cette question a été posée trop tôt).
Nohup php server.php &
Vous pouvez utiliser screen
pour ouvrir un terminal virtuel sur lequel le script peut être exécuté.
Je recommande d'utiliser screen -S php_script
. Ensuite, vous pouvez exécuter votre script (même sans &). Avec CTRL + A, D, vous pouvez vous déconnecter de la borne. Vous pouvez vous reconnecter avec screen -r
vers le terminal.
Bien que la réponse de Boba Fit vous aide, je pense qu’il existe une meilleure façon de faire fonctionner votre serveur en arrière-plan. En cas de redémarrage, vous souhaiterez probablement que votre serveur soit à nouveau opérationnel.
J'ai utilisé Superviseur dans un cas d'utilisation similaire. Dans mon cas, la planification de tâches en arrière-plan à l'aide de JMSJobQueueBundle était un long processus PHP.
La seule chose que vous devez configurer est superviseur et configurer votre processus:
[program:your_websocket_server]
command=php server.php &
process_name=%(program_name)s
numprocs=1
directory=/tmp
autostart=true
autorestart=true
startsecs=5
startretries=10
user=www-data
redirect_stderr=false
stdout_logfile=%capistrano.shared_dir%/jms_job_queue_runner.out.log
stdout_capture_maxbytes=1MB
stderr_logfile=%capistrano.shared_dir%/jms_job_queue_runner.error.log
stderr_capture_maxbytes=1MB