物聯(lián)網(wǎng)循環(huán)發(fā)送命令,因?yàn)橄挛粰C(jī)是單項(xiàng)通道,所以要一項(xiàng)一項(xiàng)命令發(fā)送,長(zhǎng)時(shí)間開(kāi)啟服務(wù)的話,比如第二天,他就只會(huì)返回?cái)?shù)組第一個(gè)命令的操作,別的命令都沒(méi)有收到或者沒(méi)有返回,你們有這種情況嗎?求解,是我寫的有問(wèn)題嗎?
現(xiàn)在的情況是:一個(gè)進(jìn)程鏈接多個(gè)設(shè)備(幾十個(gè)),循環(huán)發(fā)送命令查詢數(shù)據(jù)。
public static function onConnect($client_id)
{
var_dump("Link id:".$client_id.",Time:".date("Y-m-d H:i:s",time()));
global $redis;
$redis->set("id".$client_id,0);
$hexbin1 = array(
"010310060004A0C8",
"01031214000dC173",
"0103130A0006E14E",
"020310060004A0FB",
"02031214000dC140",
"0203130A0006E17D"
);
$client_id = Timer::add(2, function()use($client_id,$hexbin1,$redis){
if(Gateway::getUidByClientId($client_id)){
Gateway::sendToClient($client_id, hex2bin($hexbin1[$redis->get("id".$client_id)]));
if($redis->get("id".$client_id)==5){
$redis->set("id".$client_id,0);
}else{
$redis->set("id".$client_id,(int)$redis->get("id".$client_id)+1);
}
}
});
}
這是前一天我重啟服務(wù)后的截圖(重啟后數(shù)據(jù)就會(huì)恢復(fù)正常)
這是第二天早晨的數(shù)據(jù)
windows系統(tǒng)(客戶是win我也不好搞,我明白linux適合做生產(chǎn)環(huán)境)