function bench($value, $n = 1000000) { $benchmark = new Benchmark(); $benchmark->add('serialize', function () use(&$value) { serialize($value); }); $benchmark->add('json_encode', function () use(&$value) { json_encode($value); }); if (function_exists('bin_encode')) { $benchmark->add('bin_encode', function () use(&$value) { bin_encode($value); }); } if (function_exists('bson_encode')) { $benchmark->add('bson_encode', function () use(&$value) { bson_encode($value); }); } if (function_exists('msgpack_pack')) { $benchmark->add('msgpack_pack', function () use(&$value) { msgpack_pack($value); }); } if (function_exists('igbinary_serialize')) { $benchmark->add('igbinary_serialize', function () use(&$value) { igbinary_serialize($value); }); } $benchmark->add('var_export', function () use(&$value) { var_export($value, true); }); $benchmark->setCount($n); $benchmark->run(); }
/** * Encodes given value into the serialized codes in accordance with * the predefined codec. * * @param mixed $value value to be encoded. * @return array array of the encoded strings. */ public function encode($value) { if (function_exists('msgpack_pack')) { return msgpack_pack($value); } return serialize($value); }
public function serialize() { $payload = array($this->header, $this->name, $this->args); $message = $this->envelope ? $this->envelope : array(null); array_push($message, msgpack_pack($payload)); return $message; }
public static function toString($json_array, $status = self::JSONRESULT_OK, $start_time = NULL) { if ($start_time == NULL) { $start_time = \SYSTEM\time::getStartTime(); } $json = array(); $json['querytime'] = round(microtime(true) - $start_time, 5); $json['status'] = $status; $json['result'] = $json_array; if (\SYSTEM\CONFIG\config::get(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_DEFAULT_RESULT) == \SYSTEM\CONFIG\config_ids::SYS_CONFIG_DEFAULT_RESULT_MSGPACK) { //send Header \SYSTEM\HEADER::JSON(); if ($json = msgpack_pack($json)) { return $json; } throw new \SYSTEM\LOG\ERROR('MSGPack could not be encoded'); } else { //send Header \SYSTEM\HEADER::JSON(); if ($json = json_encode($json)) { return $json; } throw new \SYSTEM\LOG\ERROR('JSON could not be encoded'); } }
/** * Serializes the data * * @param array &$data data to be serialized * * @return int length of generated string */ public function serialize(&$data) { $data[0] = Helper::uuidToBin($data[0]); $data[1] = Helper::uuidToBin($data[1]); $data = msgpack_pack($data); return mb_strlen($data, 'ISO-8859-1'); }
/** * @param mixed $input * @return string * @throws \Exception */ public function encode($input) { if (function_exists('msgpack_pack')) { return self::MARKER . msgpack_pack($input); } throw new \Exception('msgpack not installed'); }
public function serialize($data) { if (!function_exists('msgpack_pack')) { throw new \Exception('msgpack extension must be installed!'); } return msgpack_pack($data); }
public function oneway_request($method, $params = null, $expiry = null, $extras = null) { $ref = ++self::$sequence % 1073741824; $frames[] = ''; $frames[] = self::VERSION; $frames[] = msgpack_pack(array($ref, microtime(true), $expiry)); $frames[] = $this->spID ? ":{$this->spID}:{$method}" : $method; $frames[] = msgpack_pack($params); if ($this->sender) { $frames[] = msgpack_pack(array('Sender', $this->sender)); } if ($this->spVer) { $frames[] = msgpack_pack(array('Version', $this->spVer)); } if (is_array($extras)) { foreach ($extras as $extra) { $frames[] = msgpack_pack($extra); } } if ($this->socket->sendmulti($frames, ZMQ::MODE_DONTWAIT) == false) { APF::get_instance()->get_logger()->error('APS[send]:error'); return false; } return $ref; }
public function handleRequest() { $args = func_get_args(); $data = $args[0]; //TODO 简单实用 msgpack //FIXME 数据传输协议依赖swoole 底层组包功能,此处不在检查数据完整 $datastr = substr($data, 4); $params = (object) msgpack_unpack($datastr); if (empty($params->op)) { $params->op = 'main.main'; } //TODO 这里的处理应该完善点 list($ctrl, $method) = explode('.', $params->op); $className = $this->getCtrlNamespace() . '\\' . ucfirst($ctrl) . 'Ctrl'; $ctrl = new $className(); $ctrl->setParams($params); //发送msgpack编码数据,头部为数据长度 $result = $ctrl->{$method}(); if (Ping::$server->debug) { echo "swoole handle request:\n"; echo "\tctrl: {$ctrl} method: {$method}\n"; echo "\tparams:\n\t\t" . json_encode($params) . "\n"; echo "\tresponse:\n\t\t" . json_encode($result) . "\n"; echo "\n\n"; } $rawResult = msgpack_pack($result); $rawResult = pack('N1', strlen($rawResult)); return $rawResult; }
public function packData($var, $bool = true, $option = array()) { $option += array('packer' => $this->option['packer']); switch ($option['packer']) { case BoxConstants::ENCODER_JSON: if ($bool == true) { return json_encode($var); } else { return json_decode($var, true); } break; case BoxConstants::ENCODER_MSGPACK: if ($bool == true) { return msgpack_pack($var); } else { return msgpack_unpack($var); } break; case BoxConstants::ENCODER_SERIALIZE: default: if ($bool == true) { return serialize($var); } else { return unserialize($var); } break; } }
/** * pack entity with msgpack protocol. * {@link https://github.com/msgpack/msgpack-php} * @param Entity $entity * @return string */ public function pack(Entity $entity) { if (function_exists('msgpack_pack')) { return msgpack_pack(array($entity->getTag(), $entity->getTime(), $entity->getData())); } else { return json_encode(array($entity->getTag(), $entity->getTime(), $entity->getData())); } }
/** * File libraries\Function\parse_config.func.php * Desc 生成随机字符串 * Manual svn://svn.vop.com/api/manual/Function/parse_config * version 1.0.0 * User duanchi <http://weibo.com/shijingye> * Date 2013-12-09 * Time 16:32 */ function mk_serial_package($_api, $_mvno, $_request_serial) { $_push_url = \DB\KV::get($_mvno['mvnokey'] . ':PUSHURL', MEM_DB_SERIAL); empty($_push_url) || $_push_url == FALSE ? $_push_url = 'no://url' : FALSE; //组装 push_url; //$_push_url = (isset($_mvno['push.'.$_api['apikey']]) && !empty($_mvno['push.'.$_api['apikey']]) ? $_mvno['push.'.$_api['apikey']] : FALSE); return msgpack_pack(['mvno' => [$_mvno['mvnokey'], $_push_url], 'api' => $_api['apikey'], 'serial' => $_request_serial]); }
public function testNext() { $io = m::mock(Io::class); $io->shouldReceive('read')->andReturn(msgpack_pack(array(1, 2, 3)) . msgpack_pack(array('a' => 1))); $messenger = new MsgpackMessenger($io); $msg = $messenger->next(); self::assertEquals(array(1, 2, 3), $msg); $msg = $messenger->next(); self::assertEquals(array('a' => 1), $msg); }
function make_token($xid) { // make access token date_default_timezone_set('Asia/Seoul'); $config = config_get(); $extra_data = array('service_key' => $config['service_key'], 'version' => $config['version']); $expire_date = date(strtotime('+7 day')); $access_token_data = array('xid' => $xid, 'expire' => $expire_date, 'data' => $extra_data); return base64_encode(msgpack_pack($access_token_data)); }
/** * {@inheritdoc} */ public function pack(Request $request, $sync = null) { // @see https://github.com/msgpack/msgpack-php/issues/45 $content = pack('C*', 0x82, IProto::CODE, $request->getType(), IProto::SYNC); $content .= msgpack_pack((int) $sync); if (null !== ($body = $request->getBody())) { $content .= msgpack_pack($body); } return PackUtils::packLength(strlen($content)) . $content; }
function test($type, $variable, $test = null) { $serialized = msgpack_pack($variable); $unserialized = msgpack_unpack($serialized); var_dump($unserialized); if (!is_bool($test)) { echo $unserialized === $variable ? 'OK' : 'ERROR', PHP_EOL; } else { echo $test || $unserialized == $variable ? 'OK' : 'ERROR', PHP_EOL; } }
function test($type, $variable, $object, $result = null) { $serialized = msgpack_pack($variable); $unserialized = msgpack_unpack($serialized, $object); var_dump($unserialized); if ($result) { echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL; } else { echo 'SKIP', PHP_EOL; } }
function test($type, $var) { echo "================\n" . $type . "\n"; $e = msgpack_pack($var); $d = msgpack_unpack($e); echo "\t" . bin2hex($e) . "\t" . $e . "\n\t"; echo str_replace("\n", "\n\t", var_export($d, true)) . "\n"; if ($var === $d) { echo "PASS\n"; } else { echo "FAIL\n"; } }
/** * 序列化PHP的数据结构(如果是序列化对象,请不要使用json序列). * * @param array $data 需要序列化的数据. * @param string $type 序列化方式. * * @return string */ protected function serializeData(array $data = array(), $type = self::SERIALIZE_BY_MSGPACK) { if (!$data) { $data = array(); } $dataString = ''; if ($type == self::SERIALIZE_BY_JSON) { $dataString = json_encode($data); } elseif ($type == self::SERIALIZE_BY_PHP) { $dataString = serialize($data); } else { $dataString = msgpack_pack($data); } return $dataString; }
/** * Sets a cache item to the given data, tags, and lifetime. * * @param string cache id to set * @param string data in the cache * @param array cache tags * @param integer lifetime * @return bool */ public function set($id, $data, array $tags = NULL, $lifetime) { // Remove old cache files $this->delete($id); // Cache File driver expects unix timestamp if ($lifetime !== 0) { $lifetime += time(); } if (!empty($tags)) { // Convert the tags into a string list $tags = implode('+', $tags); } // Write out a serialized cache return (bool) file_put_contents($this->directory . $id . '~' . $tags . '~' . $lifetime . '.msgpack', msgpack_pack($data)); }
protected function encodeVal($val) { switch ($this->defaultOption['encode']) { case 'json': return json_encode($val); break; case 'msgpack': return msgpack_pack($val); break; case 'serialize': default: return serialize($val); break; } }
public function tryBufDataSend($buffer = null) { $pm = msgpack_pack($buffer); if ($this->iscn) { $this->sock->tryMsgPackSend($pm); } else { $this->pendingMsgs[] = $pm; // TODO: Socket Stream if (!$this->isop) { $this->sock->tryConnOpening(); } // TODO: Socket Stream if (!$this->isop) { $this->sock->isop = false; } // TODO: Where TCPSocket#isop } }
/** * File libraries\Function\pre_process_request.func.php * Desc 请求预处理函数 * Manual svn://svn.vop.com/api/manual/Function/pre_process_request * version 1.0.0 * User duanchi <http://weibo.com/shijingye> * Date 2013-11-12 * Time 17:55 */ function return_package($_object = NULL, $_data_type = TYPE_NULL, $_callback = NULL) { $_result = NULL; switch ($_data_type) { /*case TYPE_JSONP: $_result = ($_callback == NULL ? '' : $_callback) .'('.json_encode($_object, JSON_PRETTY_PRINT + JSON_UNESCAPED_UNICODE).');'; break;*/ case TYPE_MSGPACK: $_result = msgpack_pack($_object); break; case TYPE_JSON: $_result = json_encode($_object); break; default: break; } echo $_result; }
public function indexAction() { $socket = System_Socket::create(AF_INET, SOCK_STREAM, SOL_TCP); $socket->connect('127.0.0.1', 8021); $in = array('gamedb', 'entity_hs_card_zhcn', array("key", 1)); $in = msgpack_pack($in); $socket->write($in, strlen($in)); $out = ''; $res = ''; while (true) { $out = $socket->read(1024, PHP_NORMAL_READ); if ($out === false) { break; } $res .= $out; } DebugTools::print_r($res); return false; }
function bench($value, $n = 1000000) { $benchmark = new Benchmark(); $serialized = serialize($value); $benchmark->add('unserialize', function () use(&$serialized) { unserialize($serialized); }); $jsonEncoded = json_encode($value); $benchmark->add('json_decode', function () use(&$jsonEncoded) { json_decode($jsonEncoded); }); if (function_exists('bin_decode')) { $binEncoded = bin_encode($value); $benchmark->add('bin_decode', function () use(&$binEncoded) { bin_decode($binEncoded); }); } if (function_exists('bson_decode')) { $bsonEncoded = bson_encode($value); $benchmark->add('bson_decode', function () use(&$bsonEncoded) { bson_decode($bsonEncoded); }); } if (function_exists('msgpack_pack')) { $msgPack = msgpack_pack($value); $benchmark->add('msgpack_unpack', function () use(&$msgPack) { msgpack_unpack($msgPack); }); } if (function_exists('igbinary_unserialize')) { $igbinarySerialized = igbinary_serialize($value); $benchmark->add('igbinary_unserialize', function () use(&$igbinarySerialized) { igbinary_unserialize($igbinarySerialized); }); } $benchmark->setCount($n); $benchmark->run(); }
/** * Generate Payload Data * * @param string $payload * @param string $container * * @throws ResponderException * * @return array */ public function generate($payload, $container = 'data') { if (function_exists('msgpack_pack')) { if ($payload) { $prevHandler = set_error_handler(function ($errno, $errstr, $errfile, $errline, $errcontext) { throw new ResponderException('Failed To Generate MSGPack'); // @codeCoverageIgnore }); $msg = msgpack_pack([$container => $payload]); if (!$msg) { set_error_handler($prevHandler); // @codeCoverageIgnore throw new ResponderException('Failed To Generate MSGPack'); // @codeCoverageIgnore } set_error_handler($prevHandler); return $msg; } return ''; } throw new ResponderException('Failed To Generate MSGPack - Supporting Library Not Available'); // @codeCoverageIgnore }
public function dispatchLoopShutdown(\Yaf\Request_Abstract $request, \Yaf\Response_Abstract $response) { if ($request->controller == 'Api') { $_REQUEST = \Core\KEY::get('_REQUEST'); $_RESPONSE = \Core\KEY::get('_RESPONSE'); $_ECHO = ''; switch ($_REQUEST['content-type']) { /*case TYPE_JSONP: $_result = ($_callback == NULL ? '' : $_callback) .'('.json_encode($_object, JSON_PRETTY_PRINT + JSON_UNESCAPED_UNICODE).');'; break;*/ case TYPE_MSGPACK: $_ECHO = msgpack_pack($_RESPONSE); break; case TYPE_JSON: $_ECHO = json_encode($_RESPONSE); break; default: break; } \Core\RESPONSE::initialize($response, RESPONSE_TYPE_YAF); \Core\RESPONSE::set($_ECHO, RESPONSE_TYPE_BODY); \Core\RESPONSE::respond(); } }
/** * 测试数据发送 * * @param $op * @param bool $http * * @return string */ function getSendData($op, $http = false) { $ret = ''; if ($http) { $ret = "GET /hello.html HTTP/1.1\r\n"; $ret .= "Host: 127.0.0.1\r\n"; $ret .= "Connection: keep-alive\r\n"; $ret .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,\n image/webp,*/*;q=0.8\r\n"; $ret .= "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,\n like Gecko) Chrome/34.0.1847.116 Safari/537.36\r\n\r\n"; return $ret; } $data = ['system.gmCreatePlayer' => [], 'system.login' => ['openId' => 'zhituo3', 'token' => '123456', 'platform' => 0, 'devId' => ''], 'role.createRole' => ['roleName' => 'testName' . uniqid()], 'role.getRole' => ['roleId' => 1]]; if (!isset($data[$op])) { return ''; } $obj = new stdClass(); $obj->op = $op; foreach ($data[$op] as $k => $v) { $obj->{$k} = $v; } $msgpack = msgpack_pack($obj); $len = pack('N1', strlen($msgpack)); return $ret = $len . $msgpack; }
public static function pack($mixed) { return msgpack_pack($mixed); }
/** */ public function pack($data) { return msgpack_pack($data); }