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.
*/2 * * * * /usr/bin/uptime > $HOME/htdocs/uptime.txt
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.
$uptime = file_get_contents('<a class="vglnk" target="_blank" href="http://'.$_SERVER['SERVER_NAME'].'/uptime.txt" rel="nofollow"><span>http</span><span>://'.$_</span><span>SERVER</span><span>['</span><span>SERVER</span><span>_</span><span>NAME</span><span>'].'/</span><span>uptime</span><span>.</span><span>txt</span></a>');
if ($uptime) {
echo $uptime;
}
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);
}