PHP套接字服务器在几分钟后发送响应

时间:2017-07-19 11:13:51

标签: php client response serversocket

我的套接字服务器工作量很大,但是我试图实现一些新功能并且它无法正常工作。

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

$ response由首先从客户端获取的消息服务器定义,例如:

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

所以,我需要做的是在3分钟后向客户端发送消息,但不仅仅是因为睡眠(180)它有效,我的问题是我需要定义向客户端发送2个不同的答案,如果$ data中的代码等于CODE:C,第一条消息必须在没有等待的情况下发送,第二条消息必须在3分钟后发送,例如:

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

我的问题是,如果我设置上面这样的代码,$ response只在3分钟后向客户端发送消息,并且只发送第一条消息,第二条消息不发送。

如果我把第二个代码放在fisrt里面只创建1,如果在3分钟之后对客户端的$响应总是Msg 2.

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

1 个答案:

答案 0 :(得分:0)

将每条消息写入套接字,理想情况下,接收端将知道轮询服务器以获取更多数据并且不终止套接字会话:

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
 }