Перейти к содержимому


- - - - -

Счетчик коннектов (нужна помощь)


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 Francisk

Francisk
  • Изучает местность

  • Пользователь
  • 85 сообщений
  • Пол:Мужчина
  • Интересы:Hi-Tec технологии , наука , assembler , RYL , фотография.

Отправлено 01.11.2009 - 16:32

Здравствуйте уважаемые пользователи форума.
Есть кусочек кода который считает коннекты через определеный порт , а надо сделать так чтоб этот счетчик считал конекты не через один порт а через шесть .
Возможно комуто это покажется слишком просто но для меня со знаниями php на уровне - скопировать и вставить , это кажется непосильным.
Поэтому привожу код и надеюсь кто нибудь посоветует какие изменения надо в него внести .

index.php
 <?PHP
 require "Includes/config.php";
 include"Includes/online.php";
 ?>
 Total Online: <?=$con['online'];?>

config.php
 <?PHP
  
 $config['server'] = array( array('ip'=>'79.165.171.144', 'port'=>10208), );
  
 $ocs = "1"; //this is in seconds (  checks on how many people online )
 ?>

online.php
 <?php
  
  
		 $handle = fopen("Includes/online.txt", "r");
		 $contents = fread($handle, filesize("Includes/online.txt"));
		 fclose($handle);
		 $contents = explode("\n", $contents);
		 //print_r($contents);
   if (!$contents || (time() - $contents[1]) > $ocs) {
		 $command = "netstat -p TCP -n";
		 exec($command,$status);
		 //$status = PsExecute($command);
		 //print_r($status);
		 $status = array_slice($status, 5);
		 $connections = array();
		 foreach ($status as $stat => $s) {
		 $c = preg_split('/ /', $s, -1, PREG_SPLIT_NO_EMPTY);
		 if ($c[3] == 'ESTABLISHED') {
			 $ipp = preg_split('/:/', $c[1], -1, PREG_SPLIT_NO_EMPTY);
			 $ripp = preg_split('/:/', $c[2], -1, PREG_SPLIT_NO_EMPTY);
			 if ($ipp[1] == $config['server'][0]['port']) {
			 $connections[] = array('type'=>$c[0],'ip'=>$ipp[0],'port'=>$ipp[1],'rip'=>$ripp[0],'rport'=>$ripp[1],'con'=>$c[3]);
  
			 }
		 }
  
		 }
  
		 $con = (!count($connections) ? 0 : count($connections))  ."\n". time();
		 if ($fp = fopen('Includes/online.txt', 'w')) {
			 fwrite ($fp, $con);
		 }
		 $con = array('online' => count($connections));
	 } else {
  
		 $con = array('online' => $contents[0]);
	 }
  
  
 //print_r($status);
 ?>


#2 pahan76

pahan76
  • Консультант

  • Пользователь
  • 990 сообщений
  • Пол:Мужчина
  • Город:Химки, М.О.

Отправлено 02.11.2009 - 10:38

Цитата

config.php
...
$config['server'] = array( array('ip'=>'79.165.171.144', 'port'=>10208), array('ip'=>'79.165.171.144', 'port'=>port2),...);
...
приписываешь остальные порты, которые тебя интересуют.

Цитата

online.php
Код
...
         if ($c[3] == 'ESTABLISHED') {
...
          $i=0;
          while ($config['server'][$i]){

             if ($ipp[1] == $config['server'][$i]['port']) {
             $connections[] = array('type'=>$c[0],'ip'=>$ipp[0],'port'=>$ipp[1],'rip'=>$ripp[0],'rport'=>$ripp[1],'con'=>$c[3]);
             }
             }
         }
  
         }
Пишу по памяти, если что не так в цикле, поправьте плиз.

#3 Francisk

Francisk
  • Изучает местность

  • Пользователь
  • 85 сообщений
  • Пол:Мужчина
  • Интересы:Hi-Tec технологии , наука , assembler , RYL , фотография.

Отправлено 02.11.2009 - 16:03

К сожалению не работает ((

#4 pahan76

pahan76
  • Консультант

  • Пользователь
  • 990 сообщений
  • Пол:Мужчина
  • Город:Химки, М.О.

Отправлено 02.11.2009 - 18:02

Конечно, я ж
++$i;
в конце цикла забыл :) :yahoo: :mda: ;) ;)

#5 Francisk

Francisk
  • Изучает местность

  • Пользователь
  • 85 сообщений
  • Пол:Мужчина
  • Интересы:Hi-Tec технологии , наука , assembler , RYL , фотография.

Отправлено 02.11.2009 - 18:35

Спасибо))
Все вроде заработало , только вот осталась мелкая проблемка , тот порт который стоит первым в массиве не учитывается (( но это не особо страшно , сделаю как умею ))

Сообщение отредактировал Francisk: 02.11.2009 - 18:45





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей