2011-05-04 4 views
0

하나의 웹 사이트를 개발하여 GPS 장치를 추적합니다. 장치 (GPS)를 호스트 이름과 특정 포트 번호로 구성하여 호스트 된 서버에 대한 연결을 설정하고 1 분 -5 분과 같이 일정한 간격으로 좌표를 보냅니다.소켓 프로그래밍을위한 PHP의 Cron 작업

소켓 클라이언트 (GPS 장치)의 요청을 받아들이도록 소켓 서버를 시작하고 데이터베이스에 저장하기 전에 구문 분석 할 PHP 페이지를 작성했습니다. 이 벌금까지.

내 문제는 다음과 같습니다

  1. 나는 오픈 청취자 페이지에 유지할 필요가 나는 cron 작업에서이 작업을 수행 한 경우에는 cron 작업과 같은 제한이 몇 분 만 실행할 수 있습니다.

  2. 서버 수신기 페이지가 중지/중단 된 경우 포트가 중단 될 때 자동으로 닫히지 않습니다. 동일한 포트를 사용하려면 시스템을 다시 시작해야하며 호스팅 할 때 불가능합니다.

올바른 방법을 알려주십시오.

내 주요 문제는 페이지가 중단 될 때 열린 소켓 포트를 닫는 방법입니다.

답변

2

소켓을 열어 둘 경우 많은 호스트 사용자가 지원하지 않습니다. 소켓을 활성 상태로 유지하는 유일한 방법은 자체 서버를 실행하는 것입니다. 호스팅 서버가 많은 웹 사이트를 호스팅하기 때문에 지속적인 cron 작업을 실행하면 서버의 리소스가 너무 많이 필요합니다. (모든 사람이 항상 cronjob을 실행하면 서버가 비정상적으로 중단됩니다 ...)

내 조언은 VPS를 보거나 자신의 서버를 호스팅하기 시작하고 시스템 작업으로 실행할 수 있습니다. D

은 당신이 소켓 연결을 청취하는 무한 루프를 사용하는 첫 번째 문제에 대한 ;-)

+0

저는이 @CyberK와 함께합니다. 나 또한 방금 소켓 서버와 같은 프로그램을 프로그래밍했다. 나는 그것이 공유 호스트에서 가능하다고 상상할 수 없다. 나는 광산을 데몬으로 시작하거나 쉘에서 데몬을 시작하도록 썼다. 따라서 공유 호스트 대신에 전용 * nix 서버를 설치하여 실행하십시오. VPS.net 또는 MediaTemple (dv) – Phliplip

+0

을 보시면 정확한 것으로 보입니다. 이 목적을 위해 자체 서버 (정적 IP)를 사용해야합니다. – AjayR

+0

@AjayR 전용 서버에서 어떤 문제가 발생 했습니까? 현재 우리는 몇 시간 (약 10 시간) 동안 서버에 데이터를 가져올 수 없거나 포트 프로세스를 죽이고 프로세스를 다시 시작한 다음 작동하고있는 것처럼 문제가 있습니다. 괜찮음 – Krutik

0

을 가고 싶은 곳 바로 PHP 당신을받지 않습니다, 귀하의 질문에 더 명확하게하려면? 그렇지 않으면 그렇게하십시오.

아마도 두 번째 문제는 PHP의 register_shutdown_function 함수를 사용할 수 있습니다. 별로 모르겠다. 시도해보십시오.

연결을 시도하고 닫고 종료 기능으로 등록하는 함수를 만듭니다.

+0

예 inifinite 루프를 사용하고 있습니다. 열린 소켓을 닫는 방법은 누군가가 페이지를로드하는 것을 멈추게합니다. – AjayR

+0

register_shutdown_function이이 용도로 작동하지 않습니다. – AjayR