2012-03-30 2 views
0

나는 PHP 스크립트에 의해 제어되는 서버를 만들고 있는데, 클라이언트 (androidphones)는이 스크립트를 호출하여 서버를 제어합니다. php가 DB에받는 IP를 저장하고 있습니다. > 내가 함께 개발하고 있어요 -PHP는 클라이언트가 IP를 통해 사용할 수 있는지 확인합니다.

  • 크론이 작업 :

    는 지금은

    내가 지금까지 뭘하려 .. 이러한 IP의 여전히 연결할 수 있는지 확인하는 방법을 찾고 있어요 usbwebserver 그래서 나는 PHP에서 cmd를 사용하지 못하도록한다.

  • PHP 스크립트에서 ip에 ping 요청을한다 : 만약 가능하다면 "빠르다"라고 대답 할 것이지만 실패하면 나는 최대 에러를 얻는다. 이 작업 방식은 나에게 내가 원하는 결과를 얻지 만 이것을 실을 수있는 가능성이 없기 때문에,이 솔루션은 내가 원한대로 시간 내에 수행하지 못한다. 이 방법이 효과가있을 수있는 방법이 있습니까? 내가 고려하고

  • 일 - HTTP를 통해 장치를 해제하고, 내가 돌아올 결과에 뭔가를 요청을

    • 가,이 경우에도 가능하며 (서버에서 클라이언트로 요청을 만드는) ?
    • db에서 ip를 가져 와서 ping을 호출하고 결과를 다시 db에 저장하는 python 스크립트를 만듭니다.
    • 최대 시간이

어떤 제안이 DB를 업데이트 한 후 초과 된 경우 장치가 연결하고 다른 기기에서 타임 스탬프를 확인할 때 타임 스탬프를 만드는?

+2

임에도 불구하고, 엔드 유저 홈 라우터의 99.9 %는 기본적으로 ICMP 핑에 응답하지 않도록 설정되어 있습니다. 또한 장치가 응답하기 위해 경로를 지정해야하며, 클라이언트 또는 안드로이드는 서비스가 실행되지 않습니다. 포트에 응답하여 핑에 응답합니다. 까다로운 하나의 비트, 클라이언트에서 하트 비트와 함께 더 나은 pahaps 및 제한 시간을 사용합니다. 클라이언트가 데이터를 요청하면 온라인 상태입니다. –

+0

IP에 성공적으로 ping을했다고해도 원래 요청을 한 것과 동일한 장치에 도달하고 있음을 의미하지는 않습니다. 대부분의 모바일 장치는 네트워크에 다시 연결할 때마다 새로운 IP 주소를 얻습니다. –

+0

@LawrenceCherone 안드로이드에 아무 문제없이 핑 (ping)했습니다 ... 나는 하트 비트 접근 방식을 시도 할 것입니다.답장을위한 thx. 다른 리플리러를 위해 : 그들이 연결을 잃는 경우에 장치는 아직도 새로운 ip를 붙잡는 php를 통해서 갈 필요가있다. 그래서 ip는 최신이다. btw lan 네트워크에서 이것을 사용하고 있습니다 – Tobrun

답변

1

클라이언트에게 여전히 활성화되어 있는지 확인하기 위해 ping을 수행합니다.

소켓을 사용하여 클라이언트에 ping을 시도해보십시오. 다음을보십시오 : http://www.php.net/manual/en/function.socket-create.php#101012

+0

소켓을 지적 해 주셔서 감사합니다. 그걸 살펴 보겠습니다. – Tobrun

0

항상 응답해야합니다. 작동하지 않아도됩니다. 클라이언트 (예 : 자바 스크립트를 사용하여 html로)를 사용하여 클라이언트의 스크립트에서 서버로 연결 (ping)하고 cronjobs에서 매 x 분마다 스크립트를 실행하여 클라이언트를 업데이트하지 않는 것이 좋습니다. x 내의 t.

+0

cronjobs를 사용할 수있는 가능성이 없습니다. – Tobrun

+0

좋아, 그럼 스크립트가 실행될 때마다 제안합니다. 확인/업데이트. 대안으로, 당신은 별도의지도를 만들고 거기에 PHP 스크립트에 대한 최대 exectution 시간을 비활성화하여, PHP를 사용할 수 있습니다. 이 경우 네버 앤딩 스크립트를 실행할 수 있습니다. php sleep()을 사용하면 지연을 설정할 수 있습니다. – ArendE

0

이러한 검사에는 전혀 문제가 없습니다.
항상 이러한 IP가 있습니다.
안드로이드 클라이언트는 실제 IP가 거의 없지만 일부 라우터/프록시를 통해 Net을 사용하기 때문에.

웹은 단방향 도로입니다. 하트 비트 기능을 구현하려면 안드로이드 클라이언트를 ping 서버로 만들어야합니다.

관련 문제