<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>https://wiki.zdechov.net/index.php?action=history&amp;feed=atom&amp;title=Zji%C5%A1t%C4%9Bn%C3%AD_dynamick%C3%BDch_veli%C4%8Din_serveru_pomoc%C3%AD_PHP</id>
	<title>Zjištění dynamických veličin serveru pomocí PHP - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.zdechov.net/index.php?action=history&amp;feed=atom&amp;title=Zji%C5%A1t%C4%9Bn%C3%AD_dynamick%C3%BDch_veli%C4%8Din_serveru_pomoc%C3%AD_PHP"/>
	<link rel="alternate" type="text/html" href="https://wiki.zdechov.net/index.php?title=Zji%C5%A1t%C4%9Bn%C3%AD_dynamick%C3%BDch_veli%C4%8Din_serveru_pomoc%C3%AD_PHP&amp;action=history"/>
	<updated>2026-06-03T20:58:56Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.zdechov.net/index.php?title=Zji%C5%A1t%C4%9Bn%C3%AD_dynamick%C3%BDch_veli%C4%8Din_serveru_pomoc%C3%AD_PHP&amp;diff=383&amp;oldid=prev</id>
		<title>Chronos v 5. 2. 2011, 09:23</title>
		<link rel="alternate" type="text/html" href="https://wiki.zdechov.net/index.php?title=Zji%C5%A1t%C4%9Bn%C3%AD_dynamick%C3%BDch_veli%C4%8Din_serveru_pomoc%C3%AD_PHP&amp;diff=383&amp;oldid=prev"/>
		<updated>2011-02-05T09:23:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 5. 2. 2011, 11:23&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 245:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 245:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tyto funkce jsou vytvořeny pro emulátor &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;MaNGOS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;. Pro ostatní emulátory je potřeba provést patřičné úpravy pro výběr data z databáze.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tyto funkce jsou vytvořeny pro emulátor MaNGOS. Pro ostatní emulátory je potřeba provést patřičné úpravy pro výběr data z databáze.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Počet hráčů online ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Počet hráčů online ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 365:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 365:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Počet běžících eventů ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Počet běžících eventů ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Funkce vrací počet aktuálně běžících &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;MaNGOS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt; in-game eventů.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Funkce vrací počet aktuálně běžících MaNGOS in-game eventů.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&quot;php&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&quot;php&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-382:rev-383:wikidiff2=table:1.14.1:bc2a06be --&gt;
&lt;/table&gt;</summary>
		<author><name>Chronos</name></author>
	</entry>
	<entry>
		<id>https://wiki.zdechov.net/index.php?title=Zji%C5%A1t%C4%9Bn%C3%AD_dynamick%C3%BDch_veli%C4%8Din_serveru_pomoc%C3%AD_PHP&amp;diff=382&amp;oldid=prev</id>
		<title>Chronos: Založena nová stránka: Na webových stránkách Free WoW serverů je užitečné zobrazit různé dynamické údaje o běhu. Ty lze s často jednoduše získat přímo pomocí jazyku PHP.  = Linu…</title>
		<link rel="alternate" type="text/html" href="https://wiki.zdechov.net/index.php?title=Zji%C5%A1t%C4%9Bn%C3%AD_dynamick%C3%BDch_veli%C4%8Din_serveru_pomoc%C3%AD_PHP&amp;diff=382&amp;oldid=prev"/>
		<updated>2011-02-05T09:22:27Z</updated>

		<summary type="html">&lt;p&gt;Založena nová stránka: Na webových stránkách Free WoW serverů je užitečné zobrazit různé dynamické údaje o běhu. Ty lze s často jednoduše získat přímo pomocí jazyku PHP.  = Linu…&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Na webových stránkách Free WoW serverů je užitečné zobrazit různé dynamické údaje o běhu. Ty lze s často jednoduše získat přímo pomocí jazyku PHP.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
Většina informací o systému je dostupná a snadno přístupná ve virtuálním souborovém systému připojeném do adresáře /proc.&lt;br /&gt;
&lt;br /&gt;
== Zatížení procesoru ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce zjišťuje společné zatížení všech jader procesoru v procentech.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function CpuUsage()&lt;br /&gt;
{  &lt;br /&gt;
  global $cpuIDLEprev, $cpuSYSTprev, $cpuUSERprev;&lt;br /&gt;
  // get processor usage seconds for pct stats ###&lt;br /&gt;
  $File = fopen(&amp;#039;/proc/stat&amp;#039;, &amp;#039;r&amp;#039;);&lt;br /&gt;
  $Row = fgets($File);&lt;br /&gt;
  fclose($File);&lt;br /&gt;
  $Parts = explode(&amp;#039; &amp;#039;, $Row);&lt;br /&gt;
  $cpuUSER = $Parts[2] + $Parts[3];&lt;br /&gt;
  $cpuSYST = $Parts[4];&lt;br /&gt;
  $cpuIDLE = $Parts[5];&lt;br /&gt;
  $cpuUSERdiff = ($cpuUSER - $cpuUSERprev);&lt;br /&gt;
  $cpuSYSTdiff = ($cpuSYST - $cpuSYSTprev);&lt;br /&gt;
  $cpuIDLEdiff = ($cpuIDLE - $cpuIDLEprev);&lt;br /&gt;
  $cpuIDLEdiffTOTAL = (($cpuUSERdiff + $cpuSYSTdiff) + $cpuIDLEdiff);&lt;br /&gt;
  if ($cpuIDLEdiffTOTAL &amp;gt; 0)&lt;br /&gt;
  {&lt;br /&gt;
    $cpuUSERcent = ($cpuUSERdiff / $cpuIDLEdiffTOTAL) * 100;&lt;br /&gt;
    $cpuSYSTcent = ($cpuSYSTdiff / $cpuIDLEdiffTOTAL) * 100;&lt;br /&gt;
    $cpuIDLEcent = ($cpuIDLEdiff / $cpuIDLEdiffTOTAL * 100);&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    $cpuUSERcent = 0;&lt;br /&gt;
    $cpuSYSTcent = 0;&lt;br /&gt;
    $cpuIDLEcent = 0;&lt;br /&gt;
  }&lt;br /&gt;
  $cpuUSERprev = $cpuUSER;&lt;br /&gt;
  $cpuSYSTprev = $cpuSYST;&lt;br /&gt;
  $cpuIDLEprev = $cpuIDLE;&lt;br /&gt;
  return(100 - round($cpuIDLEcent * 100) / 100); // Truncate to two decimals&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Využití paměti ==&lt;br /&gt;
&lt;br /&gt;
Zjišťuje celkové využití paměti včetně stránkované paměti v odkládacím oddílu swap. Funkci je možné také upravit, aby četla pouze obsazení fyzické paměti. Výsledek je vrácen v bajtech.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function MemoryUsage()&lt;br /&gt;
{&lt;br /&gt;
  $Output = array();&lt;br /&gt;
  exec(&amp;#039;free -b&amp;#039;, $Output);&lt;br /&gt;
  $Row = $Output[2];&lt;br /&gt;
  while(strpos($Row, &amp;#039;  &amp;#039;) !== false) $Row = str_replace(&amp;#039;  &amp;#039;, &amp;#039; &amp;#039;, $Row);&lt;br /&gt;
  $RowParts = explode(&amp;#039; &amp;#039;, $Row);&lt;br /&gt;
  $Row = $Output[3];&lt;br /&gt;
  while(strpos($Row, &amp;#039;  &amp;#039;) !== false) $Row = str_replace(&amp;#039;  &amp;#039;, &amp;#039; &amp;#039;, $Row);&lt;br /&gt;
  $RowParts2 = explode(&amp;#039; &amp;#039;, $Row);&lt;br /&gt;
  return($RowParts[2] + $RowParts2[2]);  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zatížení disku ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce zjišťuje zatížení pevného disku v procentech. Funkce využívá programu iostat obsaženého v balíčku sysstat. Parametrem funkce je označení sledovaného disku (sda, sdb, sdc, atd.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function DiskUtilization($Disk = &amp;#039;sda&amp;#039;)&lt;br /&gt;
{&lt;br /&gt;
  $Output = array();&lt;br /&gt;
  exec(&amp;#039;iostat -d &amp;#039;.$Disk.&amp;#039; -x -m 2 2&amp;#039;, $Output);   // 2 second measure delay&lt;br /&gt;
  $Row = $Output[6];&lt;br /&gt;
  while(strpos($Row, &amp;#039;  &amp;#039;) !== false) $Row = str_replace(&amp;#039;  &amp;#039;, &amp;#039; &amp;#039;, $Row);  // Remove redundant spaces&lt;br /&gt;
  $Parts = explode(&amp;#039; &amp;#039;, $Row);&lt;br /&gt;
  $Value = str_replace(&amp;#039;,&amp;#039;, &amp;#039;.&amp;#039;, $Parts[11]);&lt;br /&gt;
  return($Value);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zatížení sítě ==&lt;br /&gt;
&lt;br /&gt;
Vrácená hodnota je pole dostupných síťových rozhraní. Každá položka obsahuje dále údaje &amp;#039;&amp;#039;Down&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Up&amp;#039;&amp;#039;, &amp;#039;&amp;#039;DownAverage&amp;#039;&amp;#039;, &amp;#039;&amp;#039;UpAvegage&amp;#039;&amp;#039;. Hodnoty jsou v bajtech za sekundu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function GetNetworkState()&lt;br /&gt;
{  &lt;br /&gt;
  global $LastNetworkState;&lt;br /&gt;
  &lt;br /&gt;
  if(!isset($LastNetworkState)) $LastNetworkState = array();&lt;br /&gt;
  $NetworkState = array(&amp;#039;Time&amp;#039; =&amp;gt; time());&lt;br /&gt;
  $Output = array();&lt;br /&gt;
  exec(&amp;#039;cat /proc/net/dev&amp;#039;, $Output);&lt;br /&gt;
  array_shift($Output); // Skip header&lt;br /&gt;
  array_shift($Output); // Skip header&lt;br /&gt;
  foreach($Output as $Item)&lt;br /&gt;
  { &lt;br /&gt;
    while(strpos($Item, &amp;#039;  &amp;#039;) !== false) $Item = str_replace(&amp;#039;  &amp;#039;, &amp;#039; &amp;#039;, $Item);  // Rrmove multiple spaces&lt;br /&gt;
    $Item = explode(&amp;#039;:&amp;#039;, $Item);&lt;br /&gt;
    $Interface = trim($Item[0]);&lt;br /&gt;
    $Item = explode(&amp;#039; &amp;#039;, trim($Item[1]));&lt;br /&gt;
    $NetworkState[$Interface] = array(&amp;#039;Down&amp;#039; =&amp;gt; $Item[0], &amp;#039;Up&amp;#039; =&amp;gt; $Item[8]);&lt;br /&gt;
    if(array_key_exists($Interface, $LastNetworkState))&lt;br /&gt;
    {&lt;br /&gt;
      $Period = time() - $LastNetworkState[&amp;#039;Time&amp;#039;];&lt;br /&gt;
      $NetworkState[$Interface][&amp;#039;DownAverage&amp;#039;] = round(($NetworkState[$Interface][&amp;#039;Down&amp;#039;] - $LastNetworkState[$Interface][&amp;#039;Down&amp;#039;]) / $Period);&lt;br /&gt;
      $NetworkState[$Interface][&amp;#039;UpAverage&amp;#039;] = round(($NetworkState[$Interface][&amp;#039;Up&amp;#039;] - $LastNetworkState[$Interface][&amp;#039;Up&amp;#039;]) / $Period);&lt;br /&gt;
    } else&lt;br /&gt;
    {&lt;br /&gt;
      $NetworkState[$Interface][&amp;#039;DownAverage&amp;#039;] = 0;&lt;br /&gt;
      $NetworkState[$Interface][&amp;#039;UpAverage&amp;#039;] = 0;&lt;br /&gt;
    }&lt;br /&gt;
    if($NetworkState[$Interface][&amp;#039;DownAverage&amp;#039;] &amp;lt; 0) $NetworkState[$Interface][&amp;#039;DownAverage&amp;#039;] = 0;&lt;br /&gt;
    if($NetworkState[$Interface][&amp;#039;UpAverage&amp;#039;] &amp;lt; 0) $NetworkState[$Interface][&amp;#039;UpAverage&amp;#039;] = 0;&lt;br /&gt;
  }&lt;br /&gt;
  $LastNetworkState = $NetworkState;&lt;br /&gt;
  return($NetworkState);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pro zobrazení pak použijeme:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$NetworkState = GetNetworkState();&lt;br /&gt;
echo(&amp;#039;Odchozí data: &amp;#039;.$NetworkState[&amp;#039;eth0&amp;#039;][&amp;#039;Up&amp;#039;].&amp;#039; B/s&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Počet připojení síťovým službám ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce sleduje počet navázaných připojení na určitý port. K tomuto účelu se využívá systémový výpis všech síťových spojeních a jeho filtrace podle žádaného portu s vyloučením lokálních spojení. Sledovat lze např. počtu lidí připojených na TeamSpeak, který využívá port 8767.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function NetworkServiceConnectionCount($Port)&lt;br /&gt;
{&lt;br /&gt;
  $HostIP = gethostbyname(trim(`hostname`));&lt;br /&gt;
  $Output = array();&lt;br /&gt;
  exec(&amp;#039;cat /proc/net/nf_conntrack|grep &amp;quot;dst=&amp;#039;.$HostIP.&amp;#039; &amp;quot;|grep &amp;quot;dport=&amp;#039;.$Port.&amp;#039; &amp;quot;|grep &amp;quot;ASSURED&amp;quot;&amp;#039;, $Output);&lt;br /&gt;
  return(count($Output));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Volné místo na disku ==&lt;br /&gt;
&lt;br /&gt;
Tento údaj lze zjistit přímo pomocí PHP a funkce [http://cz.php.net/manual/en/function.disk-free-space.php disk_free_space]. Např.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;echo(disk_free_space(&amp;#039;/&amp;#039;));&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Odezva sítě ==&lt;br /&gt;
&lt;br /&gt;
Odezvu(anglicky latency) nejčastěji měříme vůči českému peeringovému centru [http://nix.cz/ NIX.CZ], které sdružuje v jednom bodě mnoho různých poskytovatelů. Na odezvě sítě a tedy době, za jak dlouho doputují data tam i zpět, přímo závisí plynulost reakcí ve hře. Z časového grafu latence je pak možné vypozorovat také stabilitu sítě a zatížení sítě. Funkce vrací výsledek v milisekundách.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function Ping()&lt;br /&gt;
{  &lt;br /&gt;
  exec(&amp;#039;ping nix.cz -c 1 -W 1|grep time=&amp;#039;, $Row);  // W - timeout in seconds, c - ping count&lt;br /&gt;
  $Parts = explode(&amp;#039; &amp;#039;, $Row[0]);&lt;br /&gt;
  if(count($Parts) &amp;gt; 6)&lt;br /&gt;
  {&lt;br /&gt;
    $Time = $Parts[7];&lt;br /&gt;
    $TimeParts = explode(&amp;#039;=&amp;#039;, $Time);&lt;br /&gt;
    return($TimeParts[1]);&lt;br /&gt;
  } else return(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stav síťového portu ==&lt;br /&gt;
&lt;br /&gt;
Funkce pro zjištění zda je na dané ip otevřený určitý port. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function ErrorHandler($errno, $errmsg, $filename, $linenum, $vars)&lt;br /&gt;
{&lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
function CheckPortStatus($Ip, $Port, $Timeout = 0.5)&lt;br /&gt;
{&lt;br /&gt;
  set_error_handler(&amp;#039;ErrorHandler&amp;#039;); // Disable failed connection warning&lt;br /&gt;
  //error_reporting(0);&lt;br /&gt;
  if($Fp1 = fsockopen($Ip, $Port, $ERROR_NO, $ERROR_STR, (float)$Timeout))&lt;br /&gt;
  {&lt;br /&gt;
    fclose($Fp1);&lt;br /&gt;
    return(TRUE);&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    //echo($ERROR_NO.&amp;#039;,&amp;#039;.$ERROR_STR);&lt;br /&gt;
    return(FALSE);&lt;br /&gt;
  }&lt;br /&gt;
  restore_error_handler();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klasicky se používá k zobrazení stavu serveru:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;if(CheckPortStatus(&amp;#039;localhost&amp;#039;, 8085) echo(&amp;#039;Online&amp;#039;); else echo(&amp;#039;Offline&amp;#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ale pomocí tohoto údaje lze také sledovat dostupnost emulátoru v procentech, pokud stav TRUE prohlásíme za 100 % a FALSE za 0 % a tyto hodnoty v průběhu času budeme průměrovat.&lt;br /&gt;
&lt;br /&gt;
== Doba běhu serveru ==&lt;br /&gt;
&lt;br /&gt;
Vrací dobu od startu počítače v sekundách.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function SystemUptime()&lt;br /&gt;
{&lt;br /&gt;
  $File = fopen(&amp;#039;/proc/uptime&amp;#039;, &amp;#039;r&amp;#039;);&lt;br /&gt;
  $Uptime = fgets($File);&lt;br /&gt;
  fclose($File);&lt;br /&gt;
  $UptimeParts = explode(&amp;#039; &amp;#039;, $Uptime);&lt;br /&gt;
  return($UptimeParts[0]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Systémová teplota==&lt;br /&gt;
&lt;br /&gt;
K zjištění teploty ze systémových snímačů se používá balík lm_sensors. Konkrétně pak program sensors pro určení aktuálních teplot a program sensors_detect pro provedení detekce přítomných měřicích obvodů většinou připojených přes sběrnici I2C.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function ProcessorTemperature($Sensor)&lt;br /&gt;
{&lt;br /&gt;
  $Output = array();&lt;br /&gt;
  exec(&amp;#039;/usr/bin/sensors&amp;#039;, $Output);&lt;br /&gt;
  foreach($Output as $Line)&lt;br /&gt;
  {&lt;br /&gt;
    if(substr($Line, 0, strlen($Sensor)) == $Sensor)&lt;br /&gt;
    {&lt;br /&gt;
      $Line = substr($Line, strpos($Line, &amp;#039;+&amp;#039;) + 1);&lt;br /&gt;
      $Line = substr($Line, 0, strpos($Line, &amp;#039;°&amp;#039;));&lt;br /&gt;
      return($Line);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return(0);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
Doplnit varianty systémových skriptů pro Windows.&lt;br /&gt;
&lt;br /&gt;
== Volné místo na disku ==&lt;br /&gt;
&lt;br /&gt;
Tento údaj lze zjistit přímo pomocí PHP a funkce [http://cz.php.net/manual/en/function.disk-free-space.php disk_free_space]. Např.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;echo(disk_free_space(&amp;#039;C:\&amp;#039;));&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Údaje z databáze =&lt;br /&gt;
&lt;br /&gt;
Nejprve je nutné inicializovat databázové spojení před třídu [http://cz.php.net/manual/en/book.mysqli.php mysqli].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$Database = new mysqli(&amp;quot;localhost&amp;quot;, &amp;quot;user&amp;quot;, &amp;quot;password&amp;quot;, &amp;quot;database&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tyto funkce jsou vytvořeny pro emulátor [[MaNGOS]]. Pro ostatní emulátory je potřeba provést patřičné úpravy pro výběr data z databáze.&lt;br /&gt;
&lt;br /&gt;
== Počet hráčů online ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function WoWPlayersOnline()&lt;br /&gt;
{&lt;br /&gt;
  global $Database;&lt;br /&gt;
&lt;br /&gt;
  $Database-&amp;gt;select_db(&amp;#039;characters&amp;#039;);&lt;br /&gt;
  $DbResult = $Database-&amp;gt;query(&amp;#039;SELECT COUNT(*) FROM characters WHERE online=1&amp;#039;);&lt;br /&gt;
  $Row = $DbResult-&amp;gt;fetch_array();&lt;br /&gt;
  return($Row[0]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Počet GM online ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function WoWGMOnline()&lt;br /&gt;
{&lt;br /&gt;
  global $Database;&lt;br /&gt;
&lt;br /&gt;
  $Database-&amp;gt;select_db(&amp;#039;realmd&amp;#039;);&lt;br /&gt;
  $DbResult = $Database-&amp;gt;query(&amp;#039;SELECT COUNT(*) FROM account WHERE online=1 AND gmlevel &amp;gt; 0&amp;#039;);&lt;br /&gt;
  $Row = $DbResult-&amp;gt;fetch_array();&lt;br /&gt;
  return($Row[0]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Počet účtů ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function WoWAccountCount()&lt;br /&gt;
{&lt;br /&gt;
  global $Database;&lt;br /&gt;
&lt;br /&gt;
  $Database-&amp;gt;select_db(&amp;#039;realmd&amp;#039;);&lt;br /&gt;
  $DbResult = $Database-&amp;gt;query(&amp;#039;SELECT COUNT(*) FROM account&amp;#039;);&lt;br /&gt;
  $Row = $DbResult-&amp;gt;fetch_array();&lt;br /&gt;
  return($Row[0]);  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Počet guild ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function WoWGuildCount()&lt;br /&gt;
{&lt;br /&gt;
  global $Database;&lt;br /&gt;
 &lt;br /&gt;
  $Database-&amp;gt;select_db(&amp;#039;characters&amp;#039;);&lt;br /&gt;
  $DbResult = $Database-&amp;gt;query(&amp;#039;SELECT COUNT(*) FROM guild&amp;#039;);&lt;br /&gt;
  $Row = $DbResult-&amp;gt;fetch_array();&lt;br /&gt;
  return($Row[0]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Počet postav ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function WoWCharacterCount()&lt;br /&gt;
{&lt;br /&gt;
  global $Database;&lt;br /&gt;
&lt;br /&gt;
  $Database-&amp;gt;select_db(&amp;#039;characters&amp;#039;);&lt;br /&gt;
  $DbResult = $Database-&amp;gt;query(&amp;#039;SELECT COUNT(*) FROM `characters`&amp;#039;);&lt;br /&gt;
  $Row = $DbResult-&amp;gt;fetch_array();&lt;br /&gt;
  return($Row[0]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Počet restartů ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function WoWEmulatorRestartCount()&lt;br /&gt;
{&lt;br /&gt;
  global $Database;&lt;br /&gt;
&lt;br /&gt;
  $Database-&amp;gt;select_db(&amp;#039;mangos&amp;#039;);&lt;br /&gt;
  $DbResult = $Database-&amp;gt;query(&amp;#039;SELECT COUNT(*) FROM uptime&amp;#039;);&lt;br /&gt;
  $Row = $DbResult-&amp;gt;fetch_array();&lt;br /&gt;
  return($Row[0]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Doba běhu emulátoru ==&lt;br /&gt;
&lt;br /&gt;
Funkce vrací dobu běhu od posledního startu emulátoru.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function MangosUptime()&lt;br /&gt;
{&lt;br /&gt;
  global $Database;&lt;br /&gt;
&lt;br /&gt;
  $Database-&amp;gt;select_db(&amp;#039;mangos&amp;#039;);&lt;br /&gt;
  $DbResult = $Database-&amp;gt;query(&amp;#039;SELECT `starttime`, `uptime` FROM `uptime` ORDER BY `starttime` DESC LIMIT 1&amp;#039;);&lt;br /&gt;
  $Row = $DbResult-&amp;gt;fetch_array();&lt;br /&gt;
  return($Row[&amp;#039;uptime&amp;#039;]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pokud je potřeba zobrazit informaci v čitelné podobě pro člověka, lze použít navíc tuto funkci. Ta zobrazí samostatně počet dní a k tomu hodiny a minuty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
funcion HumanReadableMangosUptime()&lt;br /&gt;
{ &lt;br /&gt;
  $Uptime = MangosUptime();&lt;br /&gt;
  $Days = floor($Uptime / 3600 / 24);&lt;br /&gt;
  if($Days == 0) $DaysText = &amp;#039;&amp;#039;;&lt;br /&gt;
  else if($Days == 1) $DaysText = $Days.&amp;#039; den&amp;#039;;&lt;br /&gt;
  else if(($Days &amp;gt; 1) and ($Days &amp;lt; 5)) $DaysText = $Days.&amp;#039; dny&amp;#039;;&lt;br /&gt;
  else if(($Days &amp;gt; 5)) $DaysText = $Days.&amp;#039; dnů&amp;#039;;&lt;br /&gt;
  $Seconds = $Uptime - 3600;  // Korekce jedné hodiny, může se lišit&lt;br /&gt;
  return($DaysText.&amp;#039; &amp;#039;.date(&amp;#039;G:i&amp;#039;, $Seconds));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Počet běžících eventů ==&lt;br /&gt;
&lt;br /&gt;
Funkce vrací počet aktuálně běžících [[MaNGOS]] in-game eventů.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function RunningEventCount()&lt;br /&gt;
{&lt;br /&gt;
  global $Database;&lt;br /&gt;
&lt;br /&gt;
  $Count = 0;&lt;br /&gt;
  $Database-&amp;gt;select_db(&amp;#039;mangos&amp;#039;);&lt;br /&gt;
  $DbResult = $Database-&amp;gt;query(&amp;#039;SELECT *, UNIX_TIMESTAMP(start_time) as start FROM game_event WHERE end_time &amp;gt; NOW() AND start_time &amp;lt; NOW()&amp;#039;);&lt;br /&gt;
  while($Row = $DbResult-&amp;gt;fetch_array())&lt;br /&gt;
  { &lt;br /&gt;
    $Start = (floor((time() - $Row[&amp;#039;start&amp;#039;]) / ($Row[&amp;#039;occurence&amp;#039;] * 60))) * $Row[&amp;#039;occurence&amp;#039;] * 60 + $Row[&amp;#039;start&amp;#039;];&lt;br /&gt;
    $End = $Start + $Row[&amp;#039;length&amp;#039;] * 60;&lt;br /&gt;
    if((time() &amp;gt; $Start) and (time() &amp;lt; $End)) $Count++;&lt;br /&gt;
  }&lt;br /&gt;
  return($Count);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Externí odkazy =&lt;br /&gt;
&lt;br /&gt;
* [http://oss.oetiker.ch/mrtg/ MRTG] - Zaznamenávání grafů stavů routerů. Vyžaduje Perl a Linux.&lt;br /&gt;
&lt;br /&gt;
* [http://phpsysinfo.sourceforge.net/ phpSysInfo] - Skript pro zobrazení informací o serveru.&lt;br /&gt;
&lt;br /&gt;
* [http://cz.php.net/manual/en/ Dokumentace PHP Manual] - Dokumentace k programovacím jazyku [[PHP].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:WoW]]&lt;br /&gt;
[[Kategorie:Programování]]&lt;/div&gt;</summary>
		<author><name>Chronos</name></author>
	</entry>
</feed>