채택완료

서버 상태(on/off) 나타내는 위젯을 만들고 있습니다.

2018-05-16 (수) 21:06:19 2,464

PHP를 시작한지 이틀이 되었습니다.

그누보드를 접하면서 php도 접하게 되었는데요...

아직 뭐가 뭔지 모르겠어서 염치 없이 도움을 구합니다ㅜㅜ

좌측 outlogin, visit 있는 곳에

echo status 로 서버 상태를 나타내는 위젯(?)을 구현하려고 합니다.

그래서 /lib에 status.lib.php를 만들었고, (visit.lib.php 참고했습니다)

head.php에도 include_once로 status.lib.php를 포함했습니다.

문제는 status.lib.php인데(아래가 그 소스코드입니다)

분명 뭔가가 잘못됬다는 건 알겠는데 어디서부터 잘못됬는지 감을 못잡겠습니다.

$ip, $port 변수를 어디서 입력해줘야 하는지도 모르겠고,

getStatus라는 function은 어디서 어떻게 실행될 수 있는지도 모르겠습니다.

염치없지만 친절하게 도와주시면 참 고맙겠습니다...  T-T

Copy
<?php
if (!defined('_GNUBOARD_')) exit;


function status($skin_dir='basic')
{
    global $config, $g5;

    if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
        if (G5_IS_MOBILE) {
            $status_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/status/'.$match[1];
            if(!is_dir($status_skin_path))
                $status_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/status/'.$match[1];
            $status_skin_url = str_replace(G5_PATH, G5_URL, $status_skin_path);
        } else {
            $status_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/status/'.$match[1];
            $status_skin_url = str_replace(G5_PATH, G5_URL, $status_skin_path);
        }
        $skin_dir = $match[1];
    } else {
        if(G5_IS_MOBILE) {
            $status_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/status/'.$skin_dir;
            $status_skin_url = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/status/'.$skin_dir;
        } else {
            $status_skin_path = G5_SKIN_PATH.'/status/'.$skin_dir;
            $status_skin_url = G5_SKIN_URL.'/status/'.$skin_dir;
        }
    }

    ob_start();
    include_once ($status_skin_path.'/status.skin.php');
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}

function getStatus($ip, $port) {
    $socket = @fsockopen($ip, $port, $errorNo, $errorStr, 2);
    if (!$socket) return false;
    else return true;
}

function parser() {
        if (getStatus((string)$ip, (string)$port)) {
            $online = "true";
        }
        else {
            $online = "false";
        }
    }
    return $online;
}
?>
|

답변 1개 / 댓글 2개

채택된 답변
+20 포인트
2018-05-25 (금) 13:43:00

$ip, $port 변수를 어디서 입력해줘야 하는지도 모르겠고,

-----------------------------------------------------------------

우선 저파일을 페이지에 인클루드 시키시고

$result = getStatus('123.222.222.222','80');

if($result !== false{

  echo '서버온라인';

}else{

  echo '서버 오프라인';

}

이런식으로 사용하시구요..

getStatus라는 function은 어디서 어떻게 실행될 수 있는지도 모르겠습니다.

---------------------------------------------------------------------------------

대충봐서는 그냥 스킨 디렉토리 설정인것같아요..

의미 없는것같구요..

제가 function을 잘 모를때 function사용하지 않고 막 코딩하며 막 코딩이 쌓이다보니

더 편한걸 찾게되고 언제부턴가 function(함수)을 쓰고 있더라구요

조금 더 지나면 class도 좋아보여 class도 사용하실거고

조금 더 지나면 namespace도 쓰시게 될겁니다

계속 하시다보면 언젠가 아~ 하고 감이오실때가 올겁니다 

저도 많이 부족해 계속 헤딩합니다.. 저희 같이 화이팅해요..

답변에 대한 댓글 2개

정말 많은 도움이 됐습니다!
답변에서 힌트를 얻어서 구현하는데 성공했습니다^^
감사드리고 화이팅합시다!
2018-05-26 (토) 00:38:03
화이팅입니다 ^^!

답변을 작성하려면 로그인이 필요합니다.