PHP socket服务器在几分钟后发送响应

问题描述:

我有一个工作得很好的套接字服务器,但我试图实现一些新功能,它不工作。PHP socket服务器在几分钟后发送响应

在我的套接字服务器中,我使用$ response字符串向客户端发送消息。如果该字符串与空值不同,则服务器将该消息发送给客户端。

的$响应由消息服务器定义的从客户端得到了第一,例如:

if($data=="CODE:A") 
{ 
    $response="Hello"; 
} 

所以,我需要做的是在3分钟后发送消息给客户端,而不是仅此由于睡眠(180)它的工作原理,我的问题是,如果$ data中的代码等于CODE:C,我需要定义向客户端发送2个不同的答案。第一条消息必须无等待地发送,第二条消息在3分钟后发送,例如:

if($data=="CODE:C") 
{ 
    $response = "Msg 1"; 
} 
else if($data=="CODE:C") 
{ 
    sleep(180); 
    $responde = "Msg 2"; 
} 

我的问题是,如果我设置这样的代码如上所述,$响应仅在3分钟后才向客户端发送消息,并且仅发送第一条消息,第二条消息未被发送。

如果我把代码中的第二个,如果最前一页只有1里面创建如果3分钟$响应客户端后总是消息2

我怎样才能实现这作品? 我已经尝试使用$ t = time()+ 180并检查时间是否等于$ t但没有任何反应。

+1

'如果($数据==“CODE:C” ){}否则如果($ data ==“CODE:C”){}',我可能是盲目的或者是某些东西,但是这些条件看起来完全相同。 – Flosculus

+0

你是如何发送消息的?在这里,你只是设置一个变量值 – apokryfos

+0

也许你不明白,但我想调用这两个,如果对相同的条件,如我在问题中说,如果我设置这个if($ data ==“CODE: C){$ response =“Msg 1”; sleep(180); $ response =“Msg 2”}响应在180秒后发送,但仅发送消息2,我需要发送消息1和3分钟后消息2 –

写每一个消息到插座,理想情况下,接收端会知道正确,而不是查询更多数据的服务器终止插座会话:

if($data=="CODE:C") 
{ 
    fwrite($client, "Msg 1"); //Write the first message to the socket 
    fflush($client); 
    sleep(180);    //Wait 
    fwrite($client, "Msg 2"); //Write the second message to the socket 
} 
+0

感谢您的帮助,但是这个部分有效,现在我可以发送2个消息但是只在180秒后发送所有消息 –

+0

@AndréPiropo您可能需要刷新句柄缓冲区(检查更新) – apokryfos

+0

仍然无法正常工作,它在3分钟后发送两条消息,而不是一条和3分钟后其他 –