{"id":232058,"date":"2023-01-21T18:49:00","date_gmt":"2023-01-21T15:49:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232058"},"modified":"2022-11-10T07:26:10","modified_gmt":"2022-11-10T04:26:10","slug":"pokazywanie-stanu-pracy-serwera-na-stronach-internetowych-uzywajacych-php-i-crontab","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/pokazywanie-stanu-pracy-serwera-na-stronach-internetowych-uzywajacych-php-i-crontab\/","title":{"rendered":"Pokazywanie stanu pracy serwera na stronach internetowych u\u017cywaj\u0105cych PHP i Crontab"},"content":{"rendered":"<p>Wszyscy wiemy, wcze\u015bniej, <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\">w tym po\u015bcie<\/a>, \u017ce mo\u017cemy u\u017cy\u0107 <strong>shell_exec<\/strong> lub <strong>exec<\/strong> w PHP, aby uzyska\u0107 wyj\u015bcie zewn\u0119trznego programu na serwerze. Czyli oczywi\u015bcie mo\u017cemy uruchomi\u0107 polecenie <strong>uptime<\/strong> linuxa, aby uzyska\u0107 status serwera, co daje co\u015b takiego (lub je\u015bli przewiniesz tego bloga, na ko\u0144cu tej strony znajdziesz aktualizacj\u0119 statusu prawie w czasie rzeczywistym, czyli aktualizowan\u0105 co 5 minut):<\/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>Jednak z tych powod\u00f3w nie zaleca si\u0119 bezpo\u015bredniego wywo\u0142ywania polecenia <strong>uptime<\/strong> za pomoc\u0105 <strong>shell_exec<\/strong> lub <strong>exec .<\/strong><br \/>\nPo pierwsze, <strong>shell_exec<\/strong> i <strong>exec<\/strong> mog\u0105 by\u0107 wy\u0142\u0105czone (o ile mi wiadomo) przez firmy hostingowe, g\u0142\u00f3wnie na wsp\u00f3\u0142dzielonych hostach ze wzgl\u0119d\u00f3w bezpiecze\u0144stwa. Fasthosts wy\u0142\u0105cza to, ale Godday z drugiej strony nie zabrania tego u\u017cycia. Po drugie, uruchamianie tych dw\u00f3ch polece\u0144 w czasie rzeczywistym w skryptach PHP jest uwa\u017cane za nieefektywne i czasoch\u0142onne (CPU).<\/p>\n<p>Prawid\u0142owy\/zalecany spos\u00f3b uzyskania takich informacji jest nast\u0119puj\u0105cy: Najpierw utw\u00f3rz <a href=\"https:\/\/helloacm.com\/crontab-generator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontab<\/a>, kt\u00f3ry uruchamia si\u0119 w odst\u0119pach czasowych np. co 2 minuty na serwerze, u\u017cywaj\u0105c <strong>crontab -e<\/strong> b\u0119dziesz m\u00f3g\u0142 edytowa\u0107 zadania za pomoc\u0105 ulubionego edytora tekstu, takiego jak jako <strong>nano<\/strong> lub <strong>vim<\/strong>.<\/p>\n<pre><code>*\/2 * * * * \/usr\/bin\/uptime &gt; $HOME\/htdocs\/uptime.txt<\/code><\/pre>\n<p>Tak wi\u0119c co 2 minuty (usu\u0144 \/2 za ka\u017cd\u0105 minut\u0119) plik <strong>uptime.txt<\/strong> b\u0119dzie aktualizowany i umieszczany w publicznym folderze HTTP. Mo\u017cesz wi\u0119c u\u017cy\u0107 nast\u0119puj\u0105cego skryptu PHP do uzyskania takich danych.<\/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>Brzmi ca\u0142kiem prosto, prawda? Daje to stosunkowo dok\u0142adny stan dost\u0119pno\u015bci i mo\u017cesz umie\u015bci\u0107 te informacje w <strong>footer.php<\/strong> bloga wordpress (na przyk\u0142ad przewi\u0144 w d\u00f3\u0142 do ko\u0144ca strony).<\/p>\n<p>Mo\u017cesz r\u00f3wnie\u017c u\u017cy\u0107 zmiennej serwera <strong>DOCUMENT_ROOT<\/strong>, kt\u00f3ra reprezentuje katalog g\u0142\u00f3wny witryny. Upewnij si\u0119 wi\u0119c, \u017ce <strong>plik uptime.txt<\/strong> znajduje si\u0119 w katalogu g\u0142\u00f3wnym witryny.<\/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\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pokazywanie stanu pracy serwera na stronach internetowych u\u017cywaj\u0105cych PHP i 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":[721,897,805,845],"tags":[1169],"class_list":["post-232058","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-php-7","category-samouczki","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/232058","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=232058"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/232058\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/223885"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=232058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=232058"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=232058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}