当前位置: 首页 > 工具软件 > PHPMQTT > 使用案例 >

mqtt php 16进制数据,phpMQTT 内存耗死问题

柯永福
2023-12-01

场景:(订阅)链接不上mqtt的时候,一下代码会出错:

function read($int = 8192, $nb = false){

// print_r(socket_get_status($this->socket));

$string="";

$togo = $int;

if($nb){

return fread($this->socket, $togo);

}

// var_dump($this->socket);

while (!feof($this->socket) && $togo>0) {

$fread = fread($this->socket, $togo);

$string .= $fread;

$togo = $int - strlen($string);

}

return $string;

}

错误分析:链接不到mqtt的时候,$this->socket这个结果为false,while里面的一直会循环,$string的大小会耗死内存。所以加一个判断,按如下代码修改。

if ($this->socket) {

while (!feof($this->socket) && $togo>0) {

$fread = fread($this->socket, $togo);

$string .= $fread;

$togo = $int - strlen($string);

}

}

搞定,又能正常运行了。

 类似资料: