Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Licznik osób - a wyłączony serwer.
Forum PHP.pl > Forum > Przedszkole
Przem4S
Witam mianowicie pierwszy raz zawitałem na wasze forum i z tego tytułu chciałbym wszystkich serdecznie przywitać oraz pozdrowić. Mój problem zaczyna się przy liczniku osób na serwerze gry, mianowicie posiadam serwer dedykowany na OS FreeBSD 7.2 w raz z Apache 2.2. PHP 5.3, mój licznik prezentuje się tak:

Kod
<?php

$zmienna13 = exec("netstat -an | grep 18001| wc -l");
$zmienna14 = exec("netstat -an | grep 18002| wc -l");
$zmienna15 = exec("netstat -an | grep 18003| wc -l");
$zmienna16 = exec("netstat -an | grep 18004| wc -l");
$zmienna17 = exec("netstat -an | grep 18061| wc -l");
$zmienna18 = -10;
?>
<small>Na tym kanale jest <?php
echo $zmienna13 + $zmienna14 + $zmienna15 + $zmienna16 + $zmienna17 + $zmienna18;
?>


Odjęte liczby są po to aby licznik nie zliczał połączeń wewnątrz serwera - np. statusu serwera który w raz z licznikiem osób jest wyświetlany na stronie. I problem polega na tym że gdy serwer gry jest wyłączony a strona włączona to wyświetla mi -10 osób na serwerze, jak temu zaradzić?

Strona na której widnieje licznik:

Kod
www.perfectmt2.pl


Jeżeli napisałem w złym dziale proszę o przeniesienie, z góry uprzejmie dziękuję za pomoc. Pozdrawiam, Przemek.
dg2001
  1. if ($zmienna13 > 0 && $zmienna14 > 0 itd...) {
  2. echo $zmienna13 + $zmienna14 + $zmienna15 + $zmienna16 + $zmienna17 + $zmienna18;
  3. } else {
  4. echo '0';
  5. }
Fifi209
A nie możesz zrobić np. tak:

  1. <?php
  2. $temp = array();
  3.  
  4. $temp[] = exec();
  5. $temp[] = exec();
  6. $temp[] = exec();
  7.  
  8. $x = 10;
  9.  
  10. $c = count($temp);
  11.  
  12. $y = ($c == 0) ? $y=$c : $y=$c-$x;
  13.  
  14. echo 'Na kanale jest: '.$y.' osób';
  15.  
  16. ?>


?

Cytat(dg2001 @ 26.07.2010, 13:54:31 ) *
  1. if ($zmienna13 > 0 && $zmienna14 > 0 itd...) {
  2. echo $zmienna13 + $zmienna14 + $zmienna15 + $zmienna16 + $zmienna17 + $zmienna18;
  3. } else {
  4. echo '0';
  5. }


o boże...
Przem4S
@2UP

Sprawdzałem działa, dzięki.

@UP

Nie wiem już "przemaniłem" na sposób 2UP'a ale nie bardzo znam się na PHP worriedsmiley.gif a skrypt musi zliczać z dużej ilości portów (mapek) aby pokazywał poprawnie wszystkich graczy.

Fifi209
Cytat(Przem4S @ 26.07.2010, 14:14:02 ) *
@2UP

Sprawdzałem działa, dzięki.

@UP

Nie wiem już "przemaniłem" na sposób 2UP'a ale nie bardzo znam się na PHP worriedsmiley.gif a skrypt musi zliczać z dużej ilości portów (mapek) aby pokazywał poprawnie wszystkich graczy.


Sposób kolegi jest mało elegancki i powolny, gdybym był moderatorem dostałby chyba ostrzeżenie za wstawianie takich kodów...

Co do zliczania z dużej ilości portów: pętla for smile.gif
Zrobiłbyś wszystko na tablicach i miałbyś duużo kodu mniej i w dodatku byłby wydajniejszy.
Przem4S
Hmm, a więc wytłumacz mi jak uzyskać wydajniejszy kod? winksmiley.jpg
Fifi209
Cytat(Przem4S @ 26.07.2010, 14:21:34 ) *
Hmm, a więc wytłumacz mi jak uzyskać wydajniejszy kod? winksmiley.jpg

Póki nie pokażesz reszty kodu - bo napisałeś że jest tego sporo więcej, to mogę jedynie odesłać do mojego postu z kodem troszkę wyżej.
Przem4S
A więc cały kod pliku statusu który jest tam includowany:

Kod
<html>
<center>
<?php
$serwer="91.150.132.82";
$port="12344";
$socket=@fsockopen($serwer,$port,$errno,$errstr,2);

if($socket==true)
{
echo "Baza Danych: <font color='#00FF00'>Online</font>.";
}else{
echo"Baza Danych: <font color='#FF0000'>Offline</font>.";
}
?>
<br>
<?php
$serwer="91.150.132.82";
$port="11002";
$socket=@fsockopen($serwer,$port,$errno,$errstr,2);

if($socket==true)
{
echo "Logowanie: <font color='#00FF00'>Online</font>.";
}else{
echo"Logowanie: <font color='#FF0000'>Offline</font>.";
}
?>
<br><br>
<?php
$serwer="91.150.132.82";
$port="13000";
$socket=@fsockopen($serwer,$port,$errno,$errstr,2);

if($socket==true)
{
echo "CH1: <font color='#00FF00'>Online</font>.";
}else{
echo"CH1: <font color='#FF0000'>Offline</font>.";
}
?>
<br>
<?php

$zmienna = exec("netstat -an | grep 13001| wc -l");
$zmienna1 = exec("netstat -an | grep 13002| wc -l");
$zmienna2 = exec("netstat -an | grep 13003| wc -l");
$zmienna3 = exec("netstat -an | grep 13004| wc -l");
$zmienna4 = exec("netstat -an | grep 13061| wc -l");
$zmienna5 = exec("netstat -an | grep 13099| wc -l");
$zmienna6 = -12;
?>
<small>Na tym kanale jest <?php
    if ($zmienna > 0 && $zmienna1 > 0 && $zmienna2 > 0 && $zmienna3 > 0 && $zmienna4 > 0 && $zmienna5 > 0 && $zmienna6 > 0){
    echo $zmienna + $zmienna1 + $zmienna2 + $zmienna3 + $zmienna4 + $zmienna5 + $zmienna6;
} else {
    echo '0';
}
?> osób.
</small><br><br>
<?php
$serwer="91.150.132.82";
$port="16000";
$socket=@fsockopen($serwer,$port,$errno,$errstr,2);

if($socket==true)
{
echo "CH2: <font color='#00FF00'>Online</font>."; //
}else{
echo"CH2: <font color='#FF0000'>Offline</font>.";
}
?>
<br>
<?php

$zmienna7 = exec("netstat -an | grep 16001| wc -l");
$zmienna8 = exec("netstat -an | grep 16002| wc -l");
$zmienna9 = exec("netstat -an | grep 16003| wc -l");
$zmienna10 = exec("netstat -an | grep 16004| wc -l");
$zmienna11 = exec("netstat -an | grep 16061| wc -l");
$zmienna12 = -10;
?>
<small>Na tym kanale jest <?php
    if ($zmienna7 > 0 && $zmienna8 > 0 && $zmienna9 > 0 && $zmienna10 > 0 && $zmienna11 > 0 && $zmienna12 > 0){
    echo $zmienna7 + $zmienna8 + $zmienna9 + $zmienna10 + $zmienna11 + $zmienna12;
} else {
    echo '0';
}
?>
osób.
<br><br></small>
<?php
$serwer="91.150.132.82";
$port="18000";
$socket=@fsockopen($serwer,$port,$errno,$errstr,2);

if($socket==true)
{
echo "CH3: <font color='#00FF00'>Online</font>."; //
}else{
echo"CH3: <font color='#FF0000'>Offline</font>.";
}
?>
<br>
<?php

$zmienna13 = exec("netstat -an | grep 18001| wc -l");
$zmienna14 = exec("netstat -an | grep 18002| wc -l");
$zmienna15 = exec("netstat -an | grep 18003| wc -l");
$zmienna16 = exec("netstat -an | grep 18004| wc -l");
$zmienna17 = exec("netstat -an | grep 18061| wc -l");
$zmienna18 = -10;
?>
<small>Na tym kanale jest <?php
    if ($zmienna13 > 0 && $zmienna14 > 0 && $zmienna15 > 0 && $zmienna16 > 0 && $zmienna17 > 0 && $zmienna18 > 0){
    echo $zmienna13 + $zmienna14 + $zmienna15 + $zmienna16 + $zmienna17 + $zmienna18;
} else {
    echo '0';
}
?>
osób.
<br><br></small>
<?php
$serwer="91.150.132.82";
$port="20000";
$socket=@fsockopen($serwer,$port,$errno,$errstr,2);

if($socket==true)
{
echo "CH4: <font color='#00FF00'>Online</font>."; //
}else{
echo"CH4: <font color='#FF0000'>Offline</font>.";
}
?>
<br>
<?php

$zmienna19 = exec("netstat -an | grep 20001| wc -l");
$zmienna20 = exec("netstat -an | grep 20002| wc -l");
$zmienna21 = exec("netstat -an | grep 20003| wc -l");
$zmienna22 = exec("netstat -an | grep 20004| wc -l");
$zmienna23 = exec("netstat -an | grep 20061| wc -l");
$zmienna24 = -10;
$zmienna25 = 2;
?>
<small>Na tym kanale jest <?php
    if ($zmienna19 > 0 && $zmienna20 > 0 && $zmienna21 > 0 && $zmienna22 > 0 && $zmienna23 > 0 && $zmienna24 > 0 && $zmienna25 > 0){
    echo $zmienna19 + $zmienna20 + $zmienna21 + $zmienna22 + $zmienna23 + $zmienna24 + $zmienna25;
} else {
    echo '0';
}
?>
osób.
<br><br></small>
<br><small><strong>
Łącznie na serwerze gra <?php
if ($zmienna > 0 && $zmienna1 > 0 && $zmienna2 > 0 && $zmienna3 > 0 && $zmienna4 > 0 && $zmienna5 > 0 && $zmienna6 > 0 && $zmienna7 > 0 && $zmienna8 > 0 && $zmienna9 > 0 && $zmienna10 > 0 && $zmienna11 > 0 && $zmienna12 > 0 && $zmienna13 > 0 && $zmienna14 > 0 && $zmienna15 > 0 && $zmienna16 > 0 && $zmienna17 > 0 && $zmienna18 > 0 && $zmienna19 > 0 && $zmienna20 > 0 && $zmienna21 > 0 && $zmienna22 > 0 && $zmienna23 > 0 && $zmienna24 > 0 && $zmienna25 > 0){
    echo $zmienna + $zmienna1 + $zmienna2 + $zmienna3 + $zmienna4 + $zmienna5 + $zmienna6 + $zmienna7 + $zmienna8 + $zmienna9 + $zmienna10 + $zmienna11 + $zmienna12 + $zmienna13 + $zmienna14 + $zmienna15 + $zmienna16 + $zmienna17 + $zmienna18 + $zmienna19 + $zmienna20 + $zmienna21 + $zmienna22 + $zmienna23 + $zmienna24 + $zmienna25;
} else {
    echo '0';
}
?> osób.</strong></small>
</center>
<br>


Tak wiem że jest ostro naje***ne winksmiley.jpg

Dodam że są to 4 kanały gry + zliczanie ogólne.
Fifi209
DRY - zapoznaj się z tym.
Przem4S
Okej rozumiem tylko jak DRY zastosować w moim kodzie sciana.gif . Przypominam że jestem cienias w php sadsmiley02.gif .
Fifi209
Cytat(Przem4S @ 26.07.2010, 16:25:25 ) *
Okej rozumiem tylko jak DRY zastosować w moim kodzie sciana.gif . Przypominam że jestem cienias w php sadsmiley02.gif .


np. to co się powtarza wrzucić w funkcję.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.