我有一个Apache服务器,我希望从中获取一些统计信息(如正常运行时间,启动时间等)以便在Java中进行操作。现在我有一个简单的PHP网页,找出服务器的正常运行时间和开始时间,在页面中回显它,然后我从Java读取单行php页面,在那里我拆分字符串,知道哪些数据在哪空间。
但现在我想知道它已经失效了多少次,为了可靠地做到这一点,我需要在服务器中注册一个进程。我的第一个想法是定期检查来自java的php页面,如果我遇到IO问题,这意味着服务器已关闭,但这也可能意味着java端没有互联网连接或其他东西,所以它不是100 %可靠。
所以我似乎需要从服务器端获取所有数据,但我不知道该怎么做。我的想法是在服务器中创建某种类型的进程,它会定期输入服务器最后一次在文本文件中运行,然后改进php页面来读取它并显示它的新数据,然后我会阅读来自PHP的文件,但我不知道如何在服务器端执行上述定期过程。
有任何帮助吗?还是其他一些可行的解决方案?
答案 0 :(得分: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