gpt4 book ai didi

php - 为什么socket read不离开循环?

转载 作者:搜寻专家 更新时间:2023-10-31 21:43:52 26 4
gpt4 key购买 nike

我有一个可以从服务器读取数据的套接字客户端。

但是,它不会在没有更多数据可供读取时立即离开 do..while 循环吗?为什么?谢谢

while (true)
{
$data_old=$data;
$data = file_get_contents("userInput.txt");

if($data_old != $data)
{
socket_write($socket, $data, strlen($data));
do
{
$line =@socket_read($socket,2048);
echo $line. "\n";
}
while($line != "");
}

}

最佳答案

我相信你的问题是执行永远不会离开 while (true) 循环而不是 while($line != "") 循环,试试这个:

while (true)
{
$data_old = $data;
$data = file_get_contents('userInput.txt');

if ($data_old != $data)
{
socket_write($socket, $data, strlen($data));

while (true)
{
$line = @socket_read($socket, 2048);

echo $line. "\n";

if ($line == '')
{
break 2;
}
}
}
}

如果套接字是非阻塞的,您可能还想使用 socket_select()超时。

关于php - 为什么socket read不离开循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6839197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com