2010-05-26 2 views
3

소켓을 닫을 때까지 소켓에 씁니다. 변경하는 방법? 각 fwrite 후 플러시하기를 원합니다.소켓을 덮어 쓰는 것은 소켓이 닫힐 때까지 플러시되지 않습니다. 변경하는 방법?

나는 시도했다 :

1) 플러시()
2) FFLUSH()
3) ob_implicit_flush (true)를;

아무도 일한, 나는 여전히 내 소켓에 대한 데이터를받을 PHP를 종료했다. 일부 샘플 코드를 포함


, 아무것도 잘못된 보인다?

함수가 그것을 위해이
while($clientSocket = socket_accept($this->serviceConnection)) 
    {        
     while($clientMessage = socket_read($clientSocket, 1024) )      
     {     
      echo 'Relaying message to server: ' . $clientMessage; 
      if(!fwrite($this->Connection, $clientMessage)) 
       echo 'Error writing to server'; 
      fflush($this->Connection); 
     } 
     socket_close($clientSocket); 
    } 
+0

어쩌면 쓰기/전송 끝이 문제가 아니라 수신 끝인 것일까 요? –

+0

PHP 스크립트가 완료되면 수신 측에서 결과를 얻습니다. 그래서 잘 작동합니다. – erotsppa

답변

5

! fflush($rc)

매개 변수로 올바른 리소스를 사용했는지 확인 했습니까?

편집

좋아요. 코드를보고 socket_ * 함수를 사용하고있다. fsockopen, fwrite, fflush, fsockclose를 사용해야합니다. 코드는 동일하게 작동해야하지만 출력을 플러시 할 수 있습니다. 자세한 내용은 예제 in the php manual을 확인하십시오.

+0

예, fsockopen으로 만든 네트워크 리소스로 작동합니까? 의사는 파일 핸들 만 표시합니다. – erotsppa

+1

fflush의 PHP 맨 페이지에 다음과 같이 표시됩니다. "파일 포인터가 유효해야하며 fopen() 또는 fsockopen()에 의해 성공적으로 열린 파일을 가리켜 야합니다 (아직 fclose()로 닫히지 않았습니다)." –

관련 문제