0

我有一个 Apache 服务器,我想从中获取一些统计信息(例如它的正常运行时间、开始时间等),以便在 Java 中进行操作。现在我有一个简单的 PHP 网页,它找出服务器的正常运行时间和启动时间,在页面中回显它,然后我从 Java 读取单行 php 页面,我在其中拆分字符串,知道哪些数据在哪个空间。

但是现在我想知道它已经关闭了多少次,并且为了可靠地做到这一点,我需要在服务器中注册一个进程。我的第一个想法是定期检查java中的php页面,如果我遇到IO问题,则意味着服务器已关闭,但也可能意味着java端没有互联网连接或其他东西,所以它不是100 % 可靠的。

所以看来我需要从服务器端获取所有数据,但我不知道该怎么做。我的想法是在服务器中创建某种进程,该进程将定期输入服务器上次在文本文件中启动的时间,并以此改进 php 页面以读取它并从中显示新数据,然后我会阅读该文件来自 PHP,但我不知道如何在服务器端执行所述定期进程。

有什么帮助吗?还是其他一些可能的解决方案?

4

1 回答 1

0

您将需要使用 apache 服务器状态页面。

您需要mod_status启用,然后您需要将其添加到您的 httpd.conf 文件中

<Location "/server-status">
    SetHandler server-status
    Require host example.com
</Location>

通过访问页面http://your.server.name/server-status?auto可以获得状态文件的机器可读版本。

从那里你可以很容易地用你的脚本解析它。

完整的文档mod_status可以在这里找到:http ://httpd.apache.org/docs/current/mod/mod_status.html

如果您想收集统计信息并稍后处理它们,您只需添加一个每分钟运行一次的 cron 作业(或您选择的其他时间范围)

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * command to be executed

# Execute every hour
  *  *  *  *  * wget --output-document=apache_stats_`date +%Y-%m-%d_%H:%M:%S`.txt http://your.server.name/server-status?auto
于 2015-05-07T14:58:00.827 回答