回答
如前所述in the doc:
當您運行啓動命令,播放叉一個新的JVM,並運行默認Netty的HTTP服務器。標準輸出流被重定向到Play控制檯,因此您可以監控其狀態。
服務器的進程ID在引導時顯示並寫入RUNNING_PID文件。要殺死正在運行的Play服務器,向進程發送SIGTERM以正確關閉應用程序就足夠了。
如果您鍵入Ctrl + D,Play控制檯將退出,但創建的服務器進程將繼續在後臺運行。然後關閉分叉的JVM的標準輸出流,並且可以從logs/application.log文件中讀取日誌記錄。
所以我認爲你必須使用play run
而不是play start
。然後你可以使用Ctrl + D停止播放。
如果您使用play start
命令運行應用程序,則從app目錄發出play stop
命令可以正常工作,並且會停止正在運行的應用程序服務器。
我通過Play 2.1.1驗證了這一點。
在Windows
我使用下面的腳本來殺死當前正在運行的遊戲服務器
@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
)
很好用。你有什麼技巧可以在Windows上啓動Play應用程序嗎?目前我正在使用「play start」,但我正在考慮編寫一個腳本,在服務器重新啓動後自動啓動應用程序。理想的情況是將應用程序封裝在Windows服務中,但從我看到的情況來看,這似乎並不簡單。 – Ian 2014-03-17 10:26:33
+1 - 這適用於我們。我在我們的開發和測試環境的每個子文件夾中使用它。 – rishimaharaj 2014-07-14 16:25:39
@Ian幾年後,但對於社區:查看「運行」和「運行啓動」之間的區別 - > http://stackoverflow.com/a/16291499/1579667 – Benj 2017-03-13 08:30:20
要做到這一點,你可以修改build.sbt文件as described here。
TaskKey[Unit]("stop") := {
val pidFile = target.value/"universal"/"stage"/"RUNNING_PID"
if (!pidFile.exists) throw new Exception("App not started!")
val pid = IO.read(pidFile)
s"kill $pid".!
println(s"Stopped application with process ID $pid")
}
但是,這隻適用於* nix系統。
您可以運行此腳本:
kill $(cat /your-play-project-path/target/universal/stage/RUNNING_PID)
你可以叫<your_server_url>/@kill
,例如:http://localhost:9022/app3/@kill
- 1. Play Framework 2.1.x CascadeType.DETACH
- 2. Chrome中的Play Framework 2.1 websockets
- 3. Play Framework 2.1 IDE設置
- 4. 在Play framework 2.1中集成Spring和Hibernate?
- 5. scala.tools.nsc.IMain Play 2.1內
- 6. show hide div/play stop audio
- 7. 爲什麼Play Framework 2.3.8部署失效?
- 8. play-framework [2.0] HTTPS
- 9. Play Framework 2 HornetQ
- 10. akka with play framework
- 11. QueryDSL和Play Framework
- 12. Play Framework + tomcat
- 13. Play Framework 2 slugify
- 14. Play Framework 2.4 Ebean
- 15. DTO in Play Framework
- 16. RedHat的Play Framework 2新貴
- 17. @with註釋的含義是什麼? (Play Framework)
- 18. Play Framework requirejs data-main
- 19. Browserify/CommonJS與Play Framework
- 20. Play-Framework&Ajax如何?
- 21. JSON渲染Scala/Play 2.1
- 22. Heroku支持Play 2.1嗎?
- 23. Play Framework的聯繫點?
- 24. Play Framework的維護模式
- 25. Play Framework的異步映射
- 26. 未找到Play Framework的hibernate.cfg.xml
- 27. Play Framework 2.1和Ebean:模型Finder不返回任何數據
- 28. 部署Play Framework 2.1應用程序到Jelastic
- 29. 在Play中支持HTTP「MERGE」動詞! Framework 2.1?
- 30. 如何使用Play Framework 2.1安排每小時工作?
令人討厭的是,他們如何從Play 1中改變了這麼多簡單的語義。「play start」意味着完全不同的東西,並且生產是通過完全不同的方式實現的。 – ripper234 2013-02-25 20:48:43
是的,它是完全不同的;你將不得不重新學習(幾乎)所有的東西:-( – 2013-02-25 20:52:30
'play run'運行在開發模式下,它是用於開發而不是生產的。 – 2015-01-01 14:35:09