PHP 套接字服务器在几分钟后发送响应
PHP socket server send response after some minutes
我有一个运行良好的套接字服务器,但我正在尝试实现一些新功能,但它无法正常工作。
在我的套接字服务器中,我使用 $response 字符串向客户端发送消息。如果此字符串与空值不同,服务器将向客户端发送消息。
$response 由服务器首先从客户端获取的消息定义,例如:
if($data=="CODE:A")
{
$response="Hello";
}
所以,我需要做的是在 3 分钟后向客户端发送一条消息,但这不仅是因为 sleep(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 分钟后才向客户端发送消息,并且只发送第一条消息,第二条没有发送。
如果我将第二个 if 的代码放在第一个 if 中,则在 3 分钟后,对客户端的 $response 始终是 Msg 2。
我怎样才能使它起作用?
我已经尝试使用 $t = time()+180 并检查时间是否等于 $t 但没有任何反应。
将每条消息写入套接字,理想情况下接收端会知道正确轮询服务器以获取更多数据而不终止套接字会话:
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
}
我有一个运行良好的套接字服务器,但我正在尝试实现一些新功能,但它无法正常工作。
在我的套接字服务器中,我使用 $response 字符串向客户端发送消息。如果此字符串与空值不同,服务器将向客户端发送消息。
$response 由服务器首先从客户端获取的消息定义,例如:
if($data=="CODE:A")
{
$response="Hello";
}
所以,我需要做的是在 3 分钟后向客户端发送一条消息,但这不仅是因为 sleep(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 分钟后才向客户端发送消息,并且只发送第一条消息,第二条没有发送。
如果我将第二个 if 的代码放在第一个 if 中,则在 3 分钟后,对客户端的 $response 始终是 Msg 2。
我怎样才能使它起作用? 我已经尝试使用 $t = time()+180 并检查时间是否等于 $t 但没有任何反应。
将每条消息写入套接字,理想情况下接收端会知道正确轮询服务器以获取更多数据而不终止套接字会话:
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
}