バックグラウンドでphpスクリプトを実行するために、次のコマンドラインコードを試しました。
php server.php &
これは動作します。問題は、コンピューターのターミナルウィンドウを閉じると、phpスクリプトも停止することです。 「無限」に実行したい。これはWebSocketサーバーなので、常に実行する必要があります。
どうすればこれを達成できますか?
前もって感謝します!
編集:私はすでに答えを見つけました(この質問方法を早めに推測しました)。
Nohup php server.php &
screen
を使用して、スクリプトを実行できる仮想端末を開くことができます。
screen -S php_script
を使用することをお勧めします。その後、スクリプトを実行できます(&がなくても)。 CTRL + A、Dを使用して、端末から切断できます。 screen -r
で端末に再接続できます。
Boba Fitの回答が役立ちますが、サーバーをバックグラウンドで実行するより良い方法があると思います。再起動の場合は、おそらくサーバーを再度実行する必要があります。
同様のユースケースで Supervisor を使用しました。私の場合、 JMSJobQueueBundle を使用してバックグラウンドタスクをスケジュールするのは、長時間実行されるPHPプロセスでした。
セットアップする必要があるのはスーパーバイザーであり、プロセスを構成するだけです。
[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