2010-05-26 64 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