我尝试了以下命令行代码在后台运行 php 脚本。
php server.php &
这有效。问题是:如果我关闭计算机上的终端窗口,php 脚本也会停止。我希望它“无限”运行。它是一个 websocket 服务器,因此它必须持续运行。
我怎样才能实现这个目标?
提前致谢!
编辑:我已经找到了答案(我猜这个问题问得太早了)。
nohup php server.php &
答案1
您可以使用screen
它打开虚拟终端,在那里运行脚本。
我建议使用screen -S php_script
。然后您可以运行脚本(即使没有 &)。使用 CTRL + A、D 您可以断开与终端的连接。您可以使用 重新连接screen -r
到终端。
答案2
虽然 Boba Fit 的答案会对您有所帮助,但我认为还有更好的方法可以在后台运行服务器。如果重新启动,您可能希望服务器再次运行。
我用了导师在类似的用例中。在我的例子中,它是一个长时间运行的 PHP 进程,它使用以下命令来安排后台任务JMSJobQueueBundle。
您唯一需要设置的是主管并配置您的流程:
[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