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

场景:(订阅)链接不上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);

}

}

搞定,又能正常运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值