Beispiel #1
0
 /**
  * 实体的对象转换为mcpack包
  *
  * @return array 转换后的数组
  */
 public function toMcpack()
 {
     $arr = $this->_value($this);
     $ret = Util::mcpack_normal($arr);
     if ($ret === false) {
         return false;
     }
     return mc_pack_array2pack($ret);
 }
Beispiel #2
0
<?php

$url = 'http://127.0.0.1:8080/';
$arrData = array('uiControl' => array('type' => 'detect', 'templateName' => 'baidu', 'templateType' => 'baidu', 'templateNone' => true, 'language' => 'zh-CN', 'encKeyStr' => 'hello_xiaoshuai_baidu_zuodan_baidu', 'maxRandomStrLen' => 3));
$context['http'] = array('method' => 'POST', 'content' => mc_pack_array2pack($arrData));
$rst = file_get_contents($url, false, stream_context_create($context));
if (empty($rst)) {
    exit(1);
}
Beispiel #3
0
 protected function _serialize($arrInput)
 {
     $mcpack = mc_pack_array2pack($arrInput);
     $nshead = $this->_packNshead(strlen($mcpack));
     return $nshead . $mcpack;
 }
Beispiel #4
0
 /**
  * 将url、post中的参数打包起来传给us
  * 我只是从ui移植到vui
  *
  * @param $strUrlParam unknown_type       	
  * @param $strPostData unknown_type       	
  * @param $strTemplateNameMod unknown_type       	
  */
 public function packUrlParam($strUrlParam, $strPostData, $strTemplateNameMod, $arrCookieInfo)
 {
     $intOpenAdvancedModify = Util::getConf('/view-ui', 'GLOBAL/OPEN_ADVANCED_MODIFY');
     if ($intOpenAdvancedModify < 1) {
         $intOpenAdvancedModify = OPEN_ADVANCED_MODIFY;
     }
     $arrQueryPart = array();
     if (!empty($strUrlParam)) {
         $intSplit = strpos($strUrlParam, '?');
         if ($intSplit !== false) {
             $strQueryInfo = substr($strUrlParam, $intSplit + 1);
             $arrQueryPart = self::URLRewiteAdvance($strQueryInfo, $intOpenAdvancedModify);
         }
     }
     $arrPostData = array();
     parse_str($strPostData, $arrPostData);
     unset($arrPostData['f']);
     if (!empty($strTemplateNameMod) && !empty($arrPostData['tn'])) {
         $arrPostData['tn'] = $strTemplateNameMod;
     }
     if (!is_array($arrQueryPart)) {
         $arrQueryPart = array();
     }
     //加入对safe参数的校验
     // 		if(isset($arrQueryPart['baidu_safe'])){
     // 			if($arrQueryPart['baidu_safe'] == 1|| $arrQueryPart['baidu_safe'] == 0){
     // 				$arrQueryPart['baidu_safe'] = intval($arrQueryPart['baidu_safe']);
     // 			}else{
     // 				unset($arrQueryPart['baidu_safe']);
     // 			}
     // 		}
     if (!is_array($arrPostData)) {
         $arrPostData = array();
     }
     $arr = array_merge($arrQueryPart, $arrPostData);
     if (!empty($arrCookieInfo)) {
         $arr = array_merge($arr, $arrCookieInfo);
     }
     foreach ($arr as $key => $value) {
         if ($value == '') {
             //value类型均为string,包括0
             unset($arr[$key]);
         }
     }
     $arr = Util::mcpack_normal($arr);
     $str = mc_pack_array2pack($arr);
     return $str;
 }
Beispiel #5
0
 private function talkWithServer2($logid_int, $query_arr)
 {
     $handler = $this->_getHandler();
     if (!$handler) {
         $this->_last_errno = ZCACHE_CLIENT_ERR_CONNECT;
         $this->_last_errmsg = "net connect err";
         return false;
     }
     $query_pack = mc_pack_array2pack($query_arr, $this->zcfObj->MCPACK_VERSION);
     $buffer = $this->_makeNshead($logid_int, $query_pack);
     return $this->_talkWithServer($handler, $buffer);
 }
Beispiel #6
0
#!/usr/bin/env php
<?php 
require_once dirname(dirname(__FILE__)) . '/init_env.php';
require_once Da\Sys_App::lib_path("CNsHead.class.php");
$opt = getopt('h::p::', ['2json', '2sp']);
$host = isset($opt['h']) ? $opt['h'] : '0.0.0.0';
$port = isset($opt['p']) ? $opt['p'] : '8765';
$socket = stream_socket_server("tcp://{$host}:{$port}", $errno, $errstr);
echo 'Listening at port: ' . $port . PHP_EOL;
if (!$socket) {
    echo "{$errstr} ({$errno})\n";
} else {
    while ($conn = stream_socket_accept($socket, 86400)) {
        $ns = new NsHead();
        $data = $ns->nshead_read($conn);
        $result = mc_pack_pack2array($data['buf']);
        isset($opt['2json']) ? print json_encode($result) : (isset($opt['2sp']) ? print serialize($result) : print_r($result));
        echo PHP_EOL;
        $data = ['errno' => 0, 'data' => 'ok'];
        $body = mc_pack_array2pack($data);
        $hdr = array('body_len' => strlen($body));
        $ns->nshead_write($conn, $hdr, $body);
    }
}
 private function _gen_idl_pack()
 {
     // response包
     $res_arr = array();
     $idl_qudata = new idl_queue_data_t();
     $idl_qudata->seterr_no(0);
     $idl_qudata->setqueue_name($this->que_name);
     $idl_qudata->setpipe_name('pipe');
     $idl_qudata->setpipelet_id(2);
     $idl_qudata->setpipelet_msg_id(65535);
     $idl_qudata->setseq_id(9527);
     $idl_qudata->setmsg_body('Testing Queue Client');
     $idl_qudata->save($res_arr);
     $res_pkg = mc_pack_array2pack($res_arr);
     $idl_qudata->seterr_no(10);
     $idl_qudata->seterr_msg('Test error mesage return');
     $res_errmsg_arr = array();
     $idl_qudata->save($res_errmsg_arr);
     $res_errmsg_pkg = mc_pack_array2pack($res_errmsg_arr);
     // reuqire包
     $wnd_size = 30;
     $req_arr = array();
     $idl_req = new idl_queue_req_t();
     $idl_req->setcmd_no(BigpipeQueueSvrCmdType::REQ_QUEUE_DATA);
     $idl_req->setqueue_name($this->que_name);
     $idl_req->settoken($this->token);
     $idl_req->setwindow_size($wnd_size);
     $idl_req_arr = array();
     $idl_req->save($req_arr);
     $req_pkg = mc_pack_array2pack($req_arr);
     return array('res' => $res_pkg, 'res_err' => $res_errmsg_pkg, 'req' => $req_pkg);
 }
Beispiel #8
0
 protected function call_acm($group_key, $key, $sub_key = null)
 {
     $acm_zk_path = $this->conf['zk_path'] . '/acm';
     $zk_expire = $this->conf['zk_expire'];
     $acm_conf = Ak_Zookeeper::getCached($acm_zk_path, 2, $zk_expire, 'Ak_McClient::checkAcmConf');
     if (!is_array($acm_conf)) {
         Ak_Log::warning("acm zk conf formate error!");
         return false;
     }
     for ($i = 1; $i <= $acm_conf['acm_idc_num']; ++$i) {
         $server_name = "server{$i}";
         if (!is_array($acm_conf['children'][$server_name])) {
             Ak_Log::warning("acm {$server_name} not exist!");
             continue;
         }
         $server_conf = $acm_conf['children'][$server_name];
         $this->span_idc->registerResource(self::ACM_RESOURCE, $server_conf['idc'], $server_name);
     }
     $resources = $this->span_idc->getResource($this->conf['span_idc_strategy_index'], self::ACM_RESOURCE, $this->conf['curr_idc']);
     if (count($resources) == 0) {
         Ak_Log::warning("get resources is empty!");
         return false;
     }
     foreach ($resources as $server_name) {
         $acm_path = $this->conf['zk_path'] . "/acm/{$server_name}";
         $aclient_conf = array('Source' => 'Galileo', 'Protocol' => 'Nshead', 'Scheduler' => 'Closest', 'GalileoConf' => array('Path' => $acm_path), 'ClosestConf' => array('AlwaysRetry' => true), 'NsheadConf' => array('ConnectTimeOut' => $this->conf['acm_connect_timeout'], 'WriteTimeOut' => $this->conf['acm_write_timeout'], 'ReadTimeOut' => $this->conf['acm_read_timeout']));
         $client = new Ak_AClient();
         $client->SetConf($aclient_conf);
         $idc_list = array();
         for ($i = 0; $i < $this->zk_conf['idc_num']; $i++) {
             $idc_list[] = $i;
         }
         $data = array('command_no' => $this->zk_conf['delete_cmd'], 'pid' => $this->conf['pid'], 'group_key' => (string) $group_key, 'key' => (string) $key, 'idc_list' => $idc_list);
         if ($sub_key !== null) {
             $data['has_sub_key'] = 1;
             $data['sub_key'] = $sub_key;
         }
         $input = array('body' => mc_pack_array2pack($data, PHP_MC_PACK_V2));
         $output = $client->Call($input);
         if ($output == null) {
             Ak_Log::warning("aclient call acm [{$server_name}] failed");
         } else {
             $res = mc_pack_pack2array($output['body']);
             if ($res['error_no'] !== 0) {
                 Ak_Log::warning("call acm [{$server_name}] output err_no is {$res['errno']}");
             } else {
                 return true;
             }
         }
     }
     return false;
 }