Beispiel #1
0
function packMsg($msgType, $taskId, $msg)
{
    $version = 1;
    $header = new CwxMsgHead($msgType, strlen($msg), $taskId, 0, $version);
    $result = $header->toNet() . $msg;
    return $result;
}
Beispiel #2
0
 /**
  * 接收消息体
  *
  * @param package $package
  * @return string or boolean
  */
 public function receiveMsg()
 {
     $socket = $this->sock;
     if ($socket == null) {
         $this->errno = ERR_REQUEST_NULL_SOCKET;
         $this->error = '连接不存在,请检查连接是否正常';
         return false;
     }
     $rdata = socket_read($socket, 14, PHP_BINARY_READ);
     $n = strlen($rdata);
     if ($n == 14) {
         $header = new CwxMsgHead();
         $ret = $header->fromNet($rdata);
         if ($ret == true) {
             $dataLen = $header->getDataLen();
             $rdata = null;
             $n = 0;
             while ($n < $dataLen) {
                 $rt = socket_read($socket, $dataLen - $n, PHP_BINARY_READ);
                 $rdata .= $rt;
                 $n = $n + strlen($rt);
             }
             if ($n == $dataLen) {
                 //处理压缩的消息,进行解压缩操作
                 if (($header->getAttr() & 2) == true) {
                     $rdata = gzuncompress($rdata);
                 }
                 return $rdata;
             } else {
                 $this->errno = ERR_REQUEST_RECEIVE_BAD_MSG;
                 $this->error = '获取消息体失败 返回数据长度错误';
                 return false;
             }
         } else {
             $this->errno = $header->getLastErrno();
             $this->error = $header->getLastError();
             return false;
         }
     } else {
         $this->errno = ERR_REQUEST_RECEIVE_BAD_MSG_HEADR;
         $this->error = '获取消息头失败 返回数据长度错误';
         return false;
     }
 }
Beispiel #3
0
 /**
 * 打包recv_data
 *
 * @param int $taskId
 s	 * @param string $data
 * @param integer $group
 * @param string $user
 * @param string $passwd
 * @param string $sign
 * @param boolean $zip
 * @return string
 */
 function packRecvData($taskId, $data, $group = null, $user = null, $passwd = null, $sign = null, $zip = null)
 {
     $dataArr = array();
     $dataArr[CWX_MQ_DATA] = $data;
     $dataArr[CWX_MQ_GROUP] = $group;
     $dataArr[CWX_MQ_USER] = $user;
     $dataArr[CWX_MQ_PASSWD] = $passwd;
     $kvPackage = CwxPackage::toPack($dataArr);
     //签名
     if ($sign == CWX_MQ_CRC32) {
         $crc32 = crc32($kvPackage);
         $crc32 = pack('L', $crc32);
         $dataArr = array();
         $dataArr[CWX_MQ_CRC32] = $crc32;
         $kvPackage .= CwxPackage::toPack($dataArr);
     } else {
         if ($sign == CWX_MQ_MD5) {
             $md5 = md5($kvPackage, true);
             $dataArr = array();
             $dataArr[CWX_MQ_MD5] = $md5;
             $kvPackage .= CwxPackage::toPack($dataArr);
         }
     }
     //压缩
     if ($zip == true) {
         $kvPackage = gzcompress($kvPackage);
         $header = new CwxMsgHead(MSG_TYPE_RECV_DATA, strlen($kvPackage), $taskId, 2, $this->version);
     } else {
         $header = new CwxMsgHead(MSG_TYPE_RECV_DATA, strlen($kvPackage), $taskId, null, $this->version);
     }
     //打包
     $result = $header->toNet() . $kvPackage;
     return $result;
 }