Visar drifttid för serverstatus på webbsidor med PHP och Crontab
Vi vet alla tidigare i det här inlägget att vi kan använda shell_exec eller exec i PHP för att få utdata från ett externt program på servern. Så uppenbarligen kan vi köra linux-kommando uptime för att få status på servern, vilket ger något sånt här (eller om du scrollar ner i denna blogg, i slutet av denna sida, hittar du nästan realtidsstatusuppdatering, dvs uppdaterad varje 5 minuter):
10:25:01 up 31 days, 15:17, 0 users, load average: 0.01, 0.09, 0.12
Det rekommenderas dock inte att anropa uptime – kommandot direkt med shell_exec eller exec
på grund av dessa skäl. För det första kan shell_exec och exec inaktiveras (såvitt jag vet) av webbhotellföretag, främst på de delade värdarna av säkerhetsskäl. Fasthosts inaktiverar detta men Godday, å andra sidan, förbjuder inte denna användning. För det andra anses det vara ineffektivt och tidskrävande (CPU) att köra dessa två kommandon i realtid inom PHP-skript.
Det korrekta/rekommenderade sättet att erhålla sådan information är följande: Skapa först en crontab som körs med ett tidsintervall, t.ex. varannan minut på servern, med crontab -e kan du redigera jobben med din favorittextredigerare, t.ex. som nano eller vim.
Således, varannan minut (ta bort /2 för varje minut), kommer filen uptime.txt att uppdateras och placeras i den offentliga HTTP-mappen. Så du kan använda följande PHP-skript för att få sådan data.
Låter ganska enkelt, eller hur? Detta ger dig en relativt korrekt drifttidsstatus och du kan lägga denna information i footer.php på wordpress-bloggen (rulla ner till slutet av sidan till exempel).
Du kan också använda DOCUMENT_ROOT servervariabel som representerar rotkatalogen för en webbplats. Så se till att uptime.txt finns i rotkatalogen på en webbplats.
$uptime = '';
$uptimefile = $_SERVER['DOCUMENT_ROOT']. '/uptime.txt';
if (is_file($uptimefile)) {
$uptime = @file_get_contents($uptimefile);
}