php socket server

next40

Новичок
Всем доброго времени суток, требуеться ваша помощь!
Никак не могу реализовать socket server примерно для 5-ти клиентов
Чтение из сокета идёт без проблем со всех клиентов, но вот запись в сокет =(
Проблема: данные в сокет не записываются вообще....а надо чтобы они записывались для каждого клиента никак не могу победить
Остальной код выложу если потребуется....
PHP:
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_set_option($socket, SOL_SOCKET, SO_KEEPALIVE, 1);
socket_set_nonblock($socket);
//socket_set_block ($socket);
    if(($ret = socket_bind($socket, $address, $port)) < 0) 
     { 
         echo "failed to bind socket: ".socket_strerror($ret)."\n"; 
         exit(); 
     }
socket_listen($socket);

socket_getsockname($socket, $addr, $port); 
 print "Server Listening on $addr:$port\n"; 
$counter=0;
 $clients=array($socket);

while(true){
	$read=$clients; $write=array();

	if(socket_select($read,$write,$ex=null,0)<1) continue;

   if(in_array($socket,$read)){
	   $clients[]=$connection=socket_accept($socket);
	  // socket_write($connection,"Clients:".(count($clients)-1));
	         socket_getpeername($connection, $raddr, $rport);  
	        print "# ".(count($clients)-1)." # Received Connection from $raddr:$rport\n";
			$key = array_search($socket, $read);
			unset($read[$key]);
			$write[]=$connection;
	continue;
   }

   foreach($read as $read_socket){//foreach 1
	   $packet = socket_read($read_socket, 1024, PHP_BINARY_READ);
	   socket_getpeername($read_socket, $r);
	   print "READ - ".$r."\n";
	if($packet===false){
	$key = array_search($read_socket, $clients);
    unset($clients[$key]);
    echo "client disconnected.\n";
    continue;
	}


$packet = trim($packet);
if (!empty($packet)) {

foreach($write as $send_socket){//foreach 2
	socket_getpeername($send_socket, $w);
	  // print "WRITE - ".$w."\n";
	//if($send_socket==$socket || $send_socket==$read_socket && $r==$w ) continue;
   $request=explode("\n",$packet);
       $_array=parse_packet($request);// Парсим запрос счетчика
	   $_array_office=change_indications($_array);//Готовим массив для офиса
		print_r($_array_office);//смотрим
       	if(stat_to_office($raddress,$ra_port,$_array_office)){//Отправляем статистику для офиса,если хорошо сохраняем к себе и выдаем ответ сенсору fsockopen
		$counter++;
		save($_array,$_array_office);// Сохраняем реальные данные для себя
		$head=reply($_array);//Проверяем, что это действительно запрос от счетчика
		  if(is_numeric(socket_write($read_socket,$head,strlen($head)))){   print "Reply to 3D-Sensor sent.\n";	  
		$key1 = array_search($read_socket, $clients);
	socket_close($clients[$key1]);
    unset($clients[$key1]);

	
		  }
		 print "## Request N-".$counter." #########################################################\n";

		          }
		        }
			  }
			}
		  }
	 
socket_close($socket);
 
Сверху