2010-05-26 108 views
3

直到套接字關閉,我的fwrite套接字才被刷新。如何改變?我希望它在每次fwrite後刷新。我的fwrite套接字不刷新,直到套接字關閉。如何改變?

我試着:

1)齊平()
2)fflush()
3)ob_implicit_flush(真);

這些都沒有工作,我仍然不得不退出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

也許不是寫/發端是問題而是接收端? – 2010-05-26 23:48:19

+0

當php腳本完成時,接收端獲取輸出。所以它工作正常。 – erotsppa 2010-05-26 23:58:33

回答

5

有一個功能! fflush($rc)

你確定你有正確的資源作爲參數嗎?

編輯

好。看着你使用socket_ *函數的代碼。你需要使用fsockopen,fwrite,fflush,fsockclose。你的代碼應該是一樣的,但你可以刷新輸出。查看示例in the php manual瞭解更多詳情。

+0

是的,它是否與fsockopen創建的網絡資源一起工作?該文件只說文件句柄。 – erotsppa 2010-05-26 23:43:51

+1

fflush的php手冊頁說: 「文件指針必須是有效的,並且必須指向由fopen()或fsockopen()(並且尚未由fclose()關閉)成功打開的文件。」 – 2010-05-27 03:33:14