diff --git a/sock/SocketServer.php b/sock/SocketServer.php index 375ec8d..e024e40 100644 --- a/sock/SocketServer.php +++ b/sock/SocketServer.php @@ -12,6 +12,7 @@ class SocketServer { protected $port; protected $_listenLoop; protected $connectionHandler; + protected $show_log=true; public function __construct( $port = 4444, $address = '127.0.0.1' ) { $this->address = $address; @@ -62,7 +63,17 @@ public function listen() { } protected function beforeServerLoop() { - printf( "Listening on %s:%d...\n", $this->address, $this->port ); + $this->log( "Listening on {$this->address}:{$this->port}...\n"); + } + + public function showLog($bool=true) { + $this->show_log=$bool; + } + + protected function log($msg) { + if($this->show_log){ + echo($msg); + } } protected function serverLoop() { diff --git a/sock/SocketServerBroadcast.php b/sock/SocketServerBroadcast.php index 9296504..297b772 100755 --- a/sock/SocketServerBroadcast.php +++ b/sock/SocketServerBroadcast.php @@ -17,11 +17,11 @@ class SocketServerBroadcast extends SocketServer { public function __construct( $port = 4444, $address = '127.0.0.1' ) { parent::__construct( $port, $address ); $this->pid = posix_getpid(); - if(!file_exists(self::PIPENAME)) { - umask(0); - if( ! posix_mkfifo(self::PIPENAME, 0666 ) ) { - die('Cant create a pipe: "' . self::PIPENAME . '"'); - } + if(!file_exists(self::PIPENAME)) { + umask(0); + if( ! posix_mkfifo(self::PIPENAME, 0666 ) ) { + die('Cant create a pipe: "' . self::PIPENAME . '"'); + } } $this->pipe = fopen(self::PIPENAME, 'r+'); } @@ -35,12 +35,11 @@ public function handleProcess() { if( $message['type'] == 'msg' ) { $client = $this->connections[ $message['pid'] ]; $msg = sprintf('[%s] (%d):%s', $client->getAddress(), $message['pid'], $message['data'] ); - printf( "Broadcast: %s", $msg ); + $this->log( "Broadcast: $msg\n"); foreach( $this->connections as $pid => $conn ) { if( $pid == $message['pid'] ) { continue; } - $conn->send( $msg ); } } @@ -52,9 +51,9 @@ public function handleProcess() { public function bytesToInt($char) { $num = ord($char[0]); $num += ord($char[1]) << 8; - $num += ord($char[2]) << 16; - $num += ord($char[3]) << 24; - return $num; + $num += ord($char[2]) << 16; + $num += ord($char[3]) << 24; + return $num; } protected function beforeServerLoop() { @@ -88,8 +87,8 @@ protected function serverLoop() { } if( ! $childPid ) { - // force child process to exit from loop - return; + // force child process to exit from loop + return; } $this->connections[ $childPid ] = $socketClient; @@ -102,20 +101,20 @@ public function broadcast( Array $msg ) { $message = serialize( $msg ); $f = fopen(self::PIPENAME, 'w+'); if( !$f ) { - echo "ERROR: Can't open PIPE for writting\n"; + $this->log("ERROR: Can't open PIPE for writting\n"); return; } - fwrite($f, $this->strlenInBytes($message) . $message ); - fclose($f); + fwrite($f, $this->strlenInBytes($message) . $message ); + fclose($f); posix_kill($this->pid, SIGUSR1); } - protected function strlenInBytes($str) { - $len = strlen($str); - $chars = chr( $len & 0xFF ); - $chars .= chr( ($len >> 8 ) & 0xFF ); - $chars .= chr( ($len >> 16 ) & 0xFF ); - $chars .= chr( ($len >> 24 ) & 0xFF ); - return $chars; + protected function strlenInBytes($str) { + $len = strlen($str); + $chars = chr( $len & 0xFF ); + $chars .= chr( ($len >> 8 ) & 0xFF ); + $chars .= chr( ($len >> 16 ) & 0xFF ); + $chars .= chr( ($len >> 24 ) & 0xFF ); + return $chars; } -} +}