Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework 如何获得play框架的启动时间?_Playframework - Fatal编程技术网

Playframework 如何获得play框架的启动时间?

Playframework 如何获得play框架的启动时间?,playframework,Playframework,我需要检索播放框架的启动时间。我添加了代码来获取全局函数中onStart方法的启动时间。但是,它仅在收到第一个请求时收集启动时间 我需要的是 1.获取播放框架(web服务器)启动的时间。 2.是否有API可供我获取物理服务器的启动时间 您可以使用playframework的日志。 获取与数据库连接时的信息 2014-03-01 11:02:02INFO~连接到jdbc的数据库[默认值]:mysql://192.168.1.6:3306/databasename 还有许多类似于异常和错误,它们与您

我需要检索播放框架的启动时间。我添加了代码来获取全局函数中onStart方法的启动时间。但是,它仅在收到第一个请求时收集启动时间

我需要的是 1.获取播放框架(web服务器)启动的时间。
2.是否有API可供我获取物理服务器的启动时间

您可以使用playframework的日志。 获取与数据库连接时的信息
2014-03-01 11:02:02
INFO~连接到jdbc的数据库[默认值]:mysql://192.168.1.6:3306/databasename

还有许多类似于异常和错误,它们与您的游戏框架有关。

我的日志文件

2014-03-01 11:12:02  INFO ~ Stopping server...
2014-03-01 11:17:39  WARN ~ releaseHelperThreads has been deprecated -- it tends to slow down your application more.
2014-03-01 11:17:39  WARN ~ releaseHelperThreads has been deprecated -- it tends to slow down your application more.
2014-03-01 11:17:39  WARN ~ releaseHelperThreads has been deprecated -- it tends to slow down your application more.
2014-03-01 11:17:39  WARN ~ releaseHelperThreads has been deprecated -- it tends to slow down your application more.
2014-03-01 11:17:40  INFO ~ database [default] connected at jdbc:mysql://192.168.1.6:3306/databasename
2014-03-01 11:17:40  INFO ~ Application started (Prod)
2014-03-01 11:17:40  INFO ~ Listening for HTTP on /0:0:0:0:0:0:0:0:9000
2014-03-01 11:18:04  INFO ~ Shutting down connection pool...
2014-03-01 11:18:04  INFO ~ Connection pool has been shutdown.
2014-03-01 11:18:04  INFO ~ Shutting down connection pool...
2014-03-01 11:18:04  INFO ~ Connection pool has been shutdown.
2014-03-01 11:18:04  INFO ~ Shutting down connection pool...
2014-03-01 11:18:04  INFO ~ Connection pool has been shutdown.
2014-03-01 11:18:04  INFO ~ Shutting down connection pool...
2014-03-01 11:18:04  INFO ~ Connection pool has been shutdown.
2014-03-01 11:18:04 ERROR ~ Error while stopping logger

您的应用程序在第一次请求后启动,因为您是在开发模式下启动的,而不是在生产模式下启动的,不是吗

在这种情况下,Play始终等待第一个请求。如果您将使用
播放开始
启动应用程序,它将在不等待请求的情况下尽快调用
开始前
开始时
方法

如果您还想测量下载依赖项和编译所需的时间,我会使用ie。一些shell脚本,它首先会创建一些文件,如
start.txt
,然后使用
play start
运行您的应用程序。接下来,在
onStart
中,您可以比较当前时间和文件创建时间之间的时间


获取物理服务器的正常运行时间取决于操作系统,因此您需要另外搜索当前机器。i、 e.对于Linuxes,如果您不介意它只在开发机器上工作,但在部署时工作,那么它可能是

。您可以使用我正在使用的解决方案:

import org.joda.time.DateTime;
import org.joda.time.Period;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;
import play.Logger;
import play.mvc.Controller;
import java.io.File;

public class ControllerWithUptime extends Controller {
    private static DateTime launched = null;

    public static String getUpTime() {
        final Period period = new Period(getLaunched(), DateTime.now());
        final PeriodFormatter formatter = new PeriodFormatterBuilder()
                .appendYears().appendSuffix(" years, ")
                .appendMonths().appendSuffix(" months, ")
                .appendWeeks().appendSuffix(" weeks, ")
                .appendDays().appendSuffix(" days, ")
                .appendHours().appendSuffix(" hours, ")
                .appendMinutes().appendSuffix(" minutes, ")
                .appendSeconds().appendSuffix(" seconds")
                .printZeroNever()
                .toFormatter();

        return formatter.print(period);
    }

    private static DateTime getLaunched() {
        if (launched == null) {
            final String path = play.Play.application().path().getAbsolutePath() + "/RUNNING_PID";
            final File pidFile = new File(path);
            if (pidFile.exists()) {
                launched = new DateTime(pidFile.lastModified());
            } else {
                Logger.warn("Using fallback to determine uptime - which is ok while developing...");
                launched = new DateTime();
            }
        }
        return launched;
    }
}

基本上,我使用PID文件的时间戳作为运行中的应用程序的第一次使用的回退。方法
getLaunched()