2012-07-27 3 views
0

포트를 열고 여러 연결 (간단한 플래시 채팅 상자)간에 소켓 통신을 허용하는 스크립트가 있습니다. 이 스크립트는 실행 시간 및 포트 종료시기와 관련하여 스스로 처리해야했습니다. 내 질문은,이 스크립트는 무한 루프에 잡힐 (또는 그렇지 않으면 내가 그것의 통제력을 잃는다) 포트를 닫으려면 어떻게해야합니까?PHP와의 소켓 연결 닫기

이 점을 명확히하기 위해 첫 번째 스크립트가 열린 포트를 강제로 닫을 두 번째 PHP 스크립트를 작성했습니다. 소켓이 닫힌 경우 실행을 중지하기 위해이 스크립트에 체크 코드를 입력 할 수 있습니다.

+0

귀하의 질문은 다소 모호합니다. 일반적으로 소켓은 프로그램에 의해 닫히거나 프로그램이 충돌하거나 종료 할 때까지 열려 있습니다. 일반적으로 당신은 어떤 종류의 통신 프로토콜을 가지고 있습니다, "이봐,이게 우리 대화의 끝이야. 이제 소켓을 닫으라고." 또한 프로그램에 무한 루프가 발생할 가능성이있는 경우 디자인을 재검토하거나 무한 루프를 피할 수있는 확인 시스템을 사용해야합니다. – kevin628

+0

스크립트를 다시 실행하려고하면 스크립트가 종료 되었더라도 포트가 이미 사용 중이라는 오류가 발생하기 때문에이 작업을 수행하려고합니까? – drew010

+0

@ kevin628 나는 PHP를 서버로 사용하고있는 채팅 상자가있다. 스크립트는 포트를 열고'while (1) :'루프 안에서 연결을 청취하고 연결을 관리합니다. 한 시간 후에 연결을 종료한다고 말하는 루프의 체크가 있습니다. 이 방법이 작동하는 동안 별도의 스크립트에서 연결을 강제 종료하는 방법을 원합니다. –

답변

1

나는 그렇게 할 수있는 방법을 모르고 있습니다. 소켓이 작성된 인스턴스 내에 존재합니다. 소켓을 생성하고 "foo.php"스크립트 내에서 while(1) 루프를 실행하면 내가 아는 한 다른 스크립트의 별도 실행, foo.php에서 생성 된 소켓에 액세스하는 "bar.php" 그것을 닫아라. 일반적으로 클라이언트 - 서버 응용 프로그램은 스레딩을 사용하여 소켓 풀링 및 모니터링을 수행합니다.