У меня есть сервер Apache, с которого я хочу получить некоторую статистику (например, время работы, время запуска и т. Д.) Для манипулирования в Java. Прямо сейчас у меня есть простая веб-страница PHP, которая определяет время работы и время запуска сервера, отображает его на странице, а затем я читаю эту однострочную php-страницу из Java, где я разбил строку, зная, какие данные в каком пространство.
Но теперь я хочу узнать, например, сколько раз он был отключен, и чтобы сделать это надежно, мне нужен процесс на сервере, который регистрирует это. Моей первой мыслью было периодически проверять эту php-страницу из java, и если бы я столкнулся с проблемой ввода-вывода, это означало бы, что сервер не работал, но это также может означать, что на стороне java нет подключения к Интернету или что-то подобное, так что это не 100 % надежный.
Кажется, мне нужно взять все данные со стороны сервера, но я точно не знаю, как это сделать. Моя идея заключалась в том, чтобы создать на сервере какой-то процесс, который бы периодически вводил информацию о том, когда сервер в последний раз работал в текстовом файле, и улучшал страницу php, чтобы читать и показывать новые данные с нее, а затем я читал этот файл из PHP, но я понятия не имею, как сделать указанный периодический процесс на стороне сервера.
Любая помощь? Или другое возможное решение?
Вы захотите воспользоваться страницей состояния сервера 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
Других решений пока нет …