Skocz do zawartości
Zaloguj się, aby obserwować  
robson_ek

[DEAMON] 100% obciazenie procesora

Polecane posty

#!/usr/local/bin/php
<?php
set_time_limit(0);
$sckMain = socket_create(AF_INET, SOCK_STREAM, 0) or die();
socket_bind($sckMain, 'localhost', 1000) or die();
socket_listen($sckMain) or die();
$oaClients = array();
while(true)
{
$sckaRead = array();
$sckaRead[0] = $sckMain;
foreach($oaClients as $x => $oClient)
{
 if($oClient -> bClosed == true)
 {
  unset($oaClients[$x]);
 }
 else
 {
  $sckaRead[] = $oClient -> sckSocket;
 }
}
socket_select($sckaRead, $null = null, $null = null, 0);
if(in_array($sckMain, $sckaRead))
{
 $sckNewClient = socket_accept($sckMain);
 $oaClients[] = new clientHandler($sckNewClient);
}

foreach($oaClients as $oClient)
{
 if(in_array($oClient -> sckSocket, $sckaRead))
 {
  $oClient -> handle();
 }
}
}
socket_close($sckMain);

class clientHandler
{
var $bClosed = false;
var $sckSocket = '';

function clientHandler($sckSocket)
{
 $this -> sckSocket = $sckSocket;
}

function handle()
{
 $sCommand = $this -> read();
 $sParameters = explode('|', $sCommand);
  if($sCommand !='')
  {
if($sParameters[0] == 'A')
{
 //komedna na shelu
 $this->send("add");
 $this->disconnect();
}
elseif($sParameters[0] == 'D')
{
 //komenda na shelu
 $this->send("del");
 $this->disconnect();
}
  }
}

function send($sMessage)
{
 socket_write($this->sckSocket, "w|".$sMessage);
}

function read()
{
 return trim(@socket_read($this->sckSocket, 1024));
}

function disconnect()
{
 $this->bClosed = true;
 socket_close($this->sckSocket);
}
}

?>

 

Napisałem takiego DEAMONa i wszystko fajnie działa, ale użycie procesora jest cały czas 100%. Można jakoś zoptymalizować ten kod żeby zmniejszyć użycie?

 

Dzięki

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
warunek jest taki że musi to działać :)
Nie pytałeś 'dlaczego nie działa' tylko 'jak to zoptymalizować' i na to pytanie udzieliłem odpowiedzi :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×