Отображение времени работы состояния сервера на веб-страницах с использованием PHP и Crontab
Ранее в этом посте мы все знали, что мы можем использовать shell_exec или exec в PHP для получения вывода внешней программы на сервере. Таким образом, очевидно, что мы можем запустить команду linux uptime, чтобы получить статус сервера, который дает что-то вроде этого (или если вы прокрутите этот блог, в конце этой страницы вы найдете обновление статуса почти в реальном времени, т.е. 5 минут):
10:25:01 up 31 days, 15:17, 0 users, load average: 0.01, 0.09, 0.12
Однако по этим причинам не рекомендуется напрямую вызывать команду uptime с помощью shell_exec или exec .
Во- первых, shell_exec и exec могут быть отключены (насколько мне известно) веб-хостинговыми компаниями, в основном на общих хостах в целях безопасности. Fasthosts отключает это, но Godday, с другой стороны, не запрещает это использование. Во-вторых, выполнение этих двух команд в режиме реального времени в PHP-скриптах считается неэффективным и затратным по времени (ЦП).
Правильный/рекомендуемый способ получения такой информации заключается в следующем: во-первых, создайте crontab, который запускается с интервалом времени, например, каждые 2 минуты на сервере, с помощью crontab -e позволит вам редактировать задания с помощью вашего любимого текстового редактора, такого как как нано или вим.
Таким образом, каждые 2 минуты (удаляйте /2 на каждую минуту) файл uptime.txt будет обновляться и помещаться в общедоступную папку HTTP. Таким образом, вы можете использовать следующий PHP-скрипт для получения таких данных.
Звучит довольно просто, правда? Это дает вам относительно точный статус времени безотказной работы, и вы можете поместить эту информацию в footer.php блога WordPress (например, прокрутите вниз до конца страницы).
Вы также можете использовать серверную переменную DOCUMENT_ROOT, которая представляет корневой каталог веб-сайта. Итак, убедитесь, что файл uptime.txt находится в корневом каталоге веб-сайта.
$uptime = '';
$uptimefile = $_SERVER['DOCUMENT_ROOT']. '/uptime.txt';
if (is_file($uptimefile)) {
$uptime = @file_get_contents($uptimefile);
}