Playframework 什么是';播放停止';游戏框架2.1?

Playframework 什么是';播放停止';游戏框架2.1?,playframework,playframework-2.1,Playframework,Playframework 2.1,播放2.1的播放停止等效于什么 如果我确实播放了“开始”,我如何干净地终止进程?只需在控制台窗口中按Ctrl+D即可。如上所述: 当您运行start命令时,Play分叉一个新的JVM并运行默认的nettyhttp服务器。标准输出流被重定向到播放控制台,因此您可以监视其状态 服务器的进程id在引导时显示,并写入正在运行的\u PID文件。要杀死正在运行的Play服务器,只需向进程发送SIGTERM即可正确关闭应用程序 如果键入Ctrl+D,播放控制台将退出,但创建的服务器进程将继续在后台运行。然后

播放2.1的
播放停止
等效于什么

如果我确实播放了“开始”,我如何干净地终止进程?

只需在控制台窗口中按Ctrl+D即可。

如上所述:

当您运行start命令时,Play分叉一个新的JVM并运行默认的nettyhttp服务器。标准输出流被重定向到播放控制台,因此您可以监视其状态

服务器的进程id在引导时显示,并写入正在运行的\u PID文件。要杀死正在运行的Play服务器,只需向进程发送SIGTERM即可正确关闭应用程序

如果键入Ctrl+D,播放控制台将退出,但创建的服务器进程将继续在后台运行。然后关闭分叉JVM的标准输出流,可以从logs/application.log文件中读取日志记录


因此,我认为您必须使用
play run
而不是
play start
。然后,您可以使用Ctrl+D停止播放。

如果您使用
play start
命令运行应用程序,则从应用程序目录发出
play stop
命令确实有效,并将停止正在运行的应用程序服务器


我在Play 2.1.1中验证了这一点。

Windows
上,我使用以下脚本杀死当前运行的Play服务器

@echo off
if exist RUNNING_PID (
  setlocal EnableDelayedExpansion
  set /p PLAY_PID=<RUNNING_PID
  echo killing pid !PLAY_PID!
  taskkill /F /PID !PLAY_PID!
  del RUNNING_PID
  endlocal
) 
@echo关闭
如果存在正在运行的PID(
setlocal EnableDelayedExpansion

设置/p PLAY_PID=要实现这一点,可以修改build.sbt文件


但是,这仅适用于*nix系统。

您可以运行以下脚本:

kill $(cat /your-play-project-path/target/universal/stage/RUNNING_PID)

您可以调用
/@kill
,例如:
http://localhost:9022/app3/@kill

控制台中存在的,但进程保持不变。是的,你是对的。我在开发中总是使用play run,CTRL+D工作正常。在生产中,你需要终止进程。他们从play 1中改变了这么多简单的语义,真让人恼火.
play start
过去的意思是完全不同的,而生产是用完全不同的方式实现的。是的,它是完全不同的;你必须重新学习(几乎)一切:-(
play run
在开发模式下运行,它是用于开发,而不是用于生产。效果很好。您有什么关于在Windows上启动play应用程序的提示吗?目前我正在使用“play start”这很好,但我正在考虑编写一个脚本,在服务器重新启动后自动启动应用程序。理想的方案是将应用程序封装在Windows服务中,但据我所见,这似乎并不简单。+1--这对我们很有用。我在开发和测试的每个子文件夹中都使用它环境。@Ian几年后,但对于社区:查看
play run
play start
->@Benj之间的区别感谢您的输入,但我认为对于是否应该使用play run/start没有任何混淆。更多的是关于如何将“play start”包装到自动重启的Windows服务中当系统重述时。+1——这对于我的Windows开发环境来说是一个非常好的“停止”命令。我在Intellij中使用它与“批处理支持”命令一起使用,并使用Stage+生成的开始脚本在Windows Intellij中启动/停止我的play应用程序。
kill $(cat /your-play-project-path/target/universal/stage/RUNNING_PID)