{"id":232532,"date":"2023-01-21T19:04:00","date_gmt":"2023-01-21T16:04:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232532"},"modified":"2022-11-10T10:21:02","modified_gmt":"2022-11-10T07:21:02","slug":"mostrando-o-tempo-de-atividade-do-status-do-servidor-em-paginas-da-web-usando-php-e-crontab","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/mostrando-o-tempo-de-atividade-do-status-do-servidor-em-paginas-da-web-usando-php-e-crontab\/","title":{"rendered":"Mostrando o tempo de atividade do status do servidor em p\u00e1ginas da Web usando PHP e Crontab"},"content":{"rendered":"\n<p>Todos n\u00f3s sabemos, anteriormente, <a href=\"https:\/\/helloacm.com\/use-php-script-to-monitor-temperature-and-uptime-for-raspberry-pi-in-the-browser\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">neste post<\/a>, que podemos usar <strong>shell_exec<\/strong> ou <strong>exec<\/strong> em PHP para obter a sa\u00edda de um programa externo no servidor. Ent\u00e3o, obviamente, podemos executar o comando linux <strong>uptime<\/strong> para obter o status do servidor, que d\u00e1 algo assim (ou se voc\u00ea rolar para baixo neste blog, no final desta p\u00e1gina, voc\u00ea encontrar\u00e1 atualiza\u00e7\u00e3o de status quase em tempo real, ou seja, atualizado a cada 5 minutos):<\/p>\n<pre><code>\u00a010:25:01 up 31 days, 15:17, \u00a00 users, \u00a0load average: 0.01, 0.09, 0.12<\/code><\/pre>\n<p>No entanto, n\u00e3o \u00e9 recomend\u00e1vel invocar diretamente o comando <strong>uptime usando<\/strong> <strong>shell_exec<\/strong> ou <strong>exec<\/strong><br \/>\npor esses motivos. Primeiro, <strong>shell_exec<\/strong> e <strong>exec<\/strong> podem ser desabilitados (at\u00e9 onde eu sei) por empresas de hospedagem na web, principalmente nos hosts compartilhados para fins de seguran\u00e7a. Fasthosts desabilita isso, mas Godday, por outro lado, n\u00e3o pro\u00edbe esse uso. Segundo, \u00e9 considerado ineficiente e demorado (CPU) executar esses dois comandos em tempo real dentro de scripts PHP.<\/p>\n<p>A maneira correta\/recomendada de obter essas informa\u00e7\u00f5es \u00e9 a seguinte: Primeiro, crie um <a href=\"https:\/\/helloacm.com\/crontab-generator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontab<\/a> que execute em um intervalo de tempo, por exemplo, a cada 2 minutos no servidor, usando <strong>crontab -e<\/strong> permitir\u00e1 que voc\u00ea edite os trabalhos usando seu editor de texto favorito, como como <strong>nano<\/strong> ou <strong>vim<\/strong>.<\/p>\n<pre><code>*\/2 * * * * \/usr\/bin\/uptime &gt; $HOME\/htdocs\/uptime.txt<\/code><\/pre>\n<p>Assim, a cada 2 minutos (remover \/2 para cada minuto), o arquivo <strong>uptime.txt<\/strong> ser\u00e1 atualizado e colocado na pasta HTTP p\u00fablica. Ent\u00e3o voc\u00ea pode usar o seguinte script PHP para obter esses dados.<\/p>\n<pre><code>$uptime = file_get_contents('&lt;a class=\"vglnk\" target=\"_blank\" href=\"http:\/\/'.$_SERVER['SERVER_NAME'].'\/uptime.txt\" rel=\"nofollow\"&gt;&lt;span&gt;http&lt;\/span&gt;&lt;span&gt;:\/\/'.$_&lt;\/span&gt;&lt;span&gt;SERVER&lt;\/span&gt;&lt;span&gt;['&lt;\/span&gt;&lt;span&gt;SERVER&lt;\/span&gt;&lt;span&gt;_&lt;\/span&gt;&lt;span&gt;NAME&lt;\/span&gt;&lt;span&gt;'].'\/&lt;\/span&gt;&lt;span&gt;uptime&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;txt&lt;\/span&gt;&lt;\/a&gt;');\nif ($uptime) {\n\u00a0 echo $uptime;\n}<\/code><\/pre>\n<p>Parece bem f\u00e1cil, certo? Isso lhe d\u00e1 um status de tempo de atividade relativamente preciso e voc\u00ea pode colocar essas informa\u00e7\u00f5es no <strong>footer.php<\/strong> do blog wordpress (role para baixo at\u00e9 o final da p\u00e1gina, por exemplo).<\/p>\n<p>Voc\u00ea tamb\u00e9m pode usar a vari\u00e1vel de servidor <strong>DOCUMENT_ROOT<\/strong> que representa o diret\u00f3rio raiz de um site. Portanto, verifique se o <strong>uptime.txt<\/strong> est\u00e1 localizado no diret\u00f3rio raiz de um site.<\/p>\n<pre><code>$uptime = '';\n$uptimefile = $_SERVER['DOCUMENT_ROOT']. '\/uptime.txt';\nif (is_file($uptimefile)) {\n\u00a0 \u00a0 $uptime = @file_get_contents($uptimefile);\n} \u00a0<\/code><\/pre>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mostrando o tempo de atividade do status do servidor em p\u00e1ginas da Web usando PHP e Crontab<\/p>\n","protected":false},"author":1,"featured_media":223885,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,722,806,846],"tags":[1170],"class_list":["post-232532","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-php-8","category-tutoriais","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=232532"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232532\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/223885"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=232532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=232532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=232532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}