getDqMessage(),DqLog::LOG_TYPE_EXCEPTION); return false; } } public static function format_data($params){ $str = json_encode($params); $len = strlen($str); $packageData=sprintf('%04d%s',$len,$str); return array($len+4,$packageData); } public static function socket_wirte($fd,$data){ if(is_resource($fd)) { list($len, $data) = self::format_data($data); if ($len >= self::$max_package_size) { DqLog::writeLog('data too long,str=' . $data . ' max_package_size=' . self::$max_package_size,DqLog::LOG_TYPE_EXCEPTION); } while ($len) { $nwrite = @socket_write($fd, $data, $len); //可能一次性写不完,需要多次写入 if ($nwrite === false) { /*数据写入失败*/ DqLog::writeLog('socker error: data=' . $data . ',fd=' . $fd . ',error=' . json_encode(error_get_last()),DqLog::LOG_TYPE_EXCEPTION); return false; } else if ($nwrite > 0) { $len -= $nwrite; $data = substr($data, $nwrite); } } return true; } return false; } public static function msectime() { list($msec, $sec) = explode(' ', microtime()); $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000); return $msectime; } }