2011-08-25 2 views
0

저는 소켓 프로그래밍을 처음 사용합니다. 나는 때로는 일부 데이터를 요청하거나 데이터를 보내기 위해 클라이언트 컴퓨터에 응용 프로그램을 작성하고 있습니다. 이 교류는 주기적으로 그리고 빈번하게 한 달에 한두 번 열리게됩니다. 소켓 프로그래밍에 대한 연구에서부터 실행이 끝나지 않는 스크립트가 필요합니다. Instintivelly 나는 이것이 빈번한 사용을 위해 자원을 불필요하게 소비 할 것이라고 생각하지만 PHP는 인터럽트를위한 메커니즘이 없다. 이상적인 스크립트는 아무 것도하지 않고 앉아서 포트를 통한 통신이 이루어지는 경우에만 스크립트가 깨어나 실행됩니다. 이것은 다른 언어로 인터럽트를 통해 이루어집니다.PHP 소켓 프로그래밍 - 폴링 대 인터럽트

누구든지이 문제를 해결할 수있는 방법을 제안 할 수 있습니까?

감사 존

답변

0

당신이 결합 된 접근 방법을 시도 할 수 있습니다. PHP 스크립트를 작성하여 제한 시간 동안 폴링/대기하고 스케줄러를 사용하여 특정 시간, 예를 들어 15 분마다 한 번씩 실행하십시오. 나는 의료 기기와 대화하기위한 아주 간단한 소켓 프로그램을 작성했다. 앉아서 기다리는 데 많은 자원을 필요로하지는 않지만 걱정되는 경우 위의 기술로 제한 할 수 있습니다.

+0

감사합니다. 그 방법 일 수 있습니다. 나는 그 균열을 줄 것이다. 자원 낭비가 덜 들립니다. – user505988

1

null 네 번째 매개 변수와 함께 socket_select을 사용하여 스크립트를 무기한 절전 모드로 설정하고 읽을 소켓에 데이터가있을 때 깨어나게 할 수 있습니다.

덜 효율적인 다른 방법은 폴링하고 n 분 동안 잠자기 후 다시 폴링하는 것입니다.

0

요한이 가능한 트랜잭션이 가장 하나 또는 한 달에 두 번을 발생 언급 귀하의 질문에

. 클라이언트 측에서 cron (또는 동등한 창)을 사용하는 것을 고려해 봤습니까? 아마도 한 시간에 한 번 확인해 봐야할까요?

데이터가 너무 드물기 때문에 매우 시간이 많이 걸립니까?

+0

댓글로 게시해서는 안됩니까? 그것은 정말로 대답이 아닙니다. –

+0

안녕하세요, 저는 더 질문 스타일을 만들려고 노력하고 있었지만 가능한 한 많은 주변 정보/생각 프로세스를 제공했습니다. – user505988