public function yar_clientAction() { $client = new Yar_Client("http://yaf.zhaoquan.com/rpc/yar"); $result = $client->getOne(); DebugTools::print_r($result); return false; }
/** * 初始化,参数检查,URL绑定 * * @throws Exception\RuntimeException */ protected function init() { $this->_client = new Yar_Client($this->_entry); $this->_client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 2000); $this->_client->SetOpt(YAR_OPT_TIMEOUT, 20000); $this->_client->SetOpt(YAR_OPT_PACKAGER, $this->_package); }
public function rpc($entrypoint, $service) { $id = "_rpc.{$entrypoint}.{$service}"; if (!isset($this->container[$id])) { $config = $this->_config['rpc']; if (empty($config['entry_points'][$entrypoint])) { throw new \RuntimeException("RPC entry point: {$entrypoint} is not found."); } $url = "{$config['entry_points'][$entrypoint]}?service={$service}"; $rpc = new \Yar_Client($url); $rpc->SetOpt(YAR_OPT_TIMEOUT, empty($config['timeout']) ? '5000' : $config['timeout']); $rpc->SetOpt(YAR_OPT_PACKAGER, empty($config['packager']) ? 'php' : $config['packager']); $rpc->SetOpt(YAR_OPT_CONNECT_TIMEOUT, empty($config['connect_timeout']) ? '2000' : $config['connect_timeout']); $this->container[$id] = $rpc; } return $this->container[$id]; }
/** * 初始化,参数检查,URL绑定 * * @throws Exception\RuntimeException */ protected function init() { // 判断远程调用列表,返回URL $names = array_keys($this->_allows); $urls = array_values($this->_allows); // 本地调用与远程调用,本地调用、远程调用验证Token(验证机制相同)todo 远程调用验证机制 if (empty($this->_app) || ucfirst($this->_app) == APP_NAME) { $url = APP_URL . $this->_entry; } elseif (in_array(strtolower($this->_app), $names)) { $url = $urls[array_search(strtolower($this->_app), $names)] . $this->_entry; $this->_params['yarsource'] = APP_NAME; } else { throw new Exception\RuntimeException("Yar Client app is invalid"); } $this->_params['token'] = $this->getToken(); if (empty($this->_module) || empty($this->_controller) || empty($this->_action)) { throw new Exception\RuntimeException("Yar Client [Module/Controller/Action] is empty"); } $this->_client = new Yar_Client($url); $this->_client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 2000); $this->_client->SetOpt(YAR_OPT_TIMEOUT, 20000); $this->_client->SetOpt(YAR_OPT_PACKAGER, $this->_package); }
<?php $client = new Yar_Client('tcp://127.0.0.1:12345'); $arguments = ['A' => 4, 'B' => 5, 'C' => 'php']; $data = $client->__call("Arith.Multiply", $arguments); var_dump($data);
<?php $client = new Yar_Client('http://127.0.0.1:10000'); $result = $client->echoName('han mei mei'); var_dump($result);
<?php /** * 本脚本用来测试子站接口测试 * http://queue.ch.gongchang.com/?name=subsearch&opt=status&auth=gc895316 */ $params = array('page' => 1, 'keywords' => '府绸', 'cateid' => 0, 'areaid' => 0, 'zzname' => 'fangzhi', 'subtype' => 4, 'cate1' => 1962, 'baseKey' => '府绸', 'isspider' => false); $client = new Yar_Client("http://rpcapi.ch.gongchang.com/rpc/Zzsearch_Getsearchdata"); $client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1); $result = $client->product($params); $result = msgpack_unpack($result); var_dump($result);
<?php $client = new Yar_Client("http://localhost/server.php"); /* the following setopt is optinal */ $client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1); /* call remote service */ $result = $client->some_method("parameter"); print_r($result . '<br>'); //Concurrent call function callback($retval, $callinfo) { print_r($retval . ' / callback / '); var_dump($callinfo); print_r('<br>'); } function error_callback($type, $error, $callinfo) { var_dump($type); var_dump($error); var_dump($callinfo); error_log($error); } Yar_Concurrent_Client::call("http://localhost/server.php", "some_method", array("Concurrent 1"), "callback"); // if the callback is not specificed, callback in loop will be used Yar_Concurrent_Client::call("http://localhost/server.php", "some_method", array("Concurrent 2")); //this server accept json packager Yar_Concurrent_Client::call("http://localhost/server.php", "some_method", array("Concurrent 3"), "callback", "error_callback", array(YAR_OPT_PACKAGER => "json")); //custom timeout Yar_Concurrent_Client::call("http://localhost/server.php", "some_method", array("Concurrent 4"), "callback", "error_callback", array(YAR_OPT_TIMEOUT => 1)); //send the requests, //the error_callback is optional
public function cls($do) { $client = new \Yar_Client(self::REQUEST_URL . $do); $client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000); return $client; }
/** * 执行远程调用任务 * @param $uri * @param $method * @param array $parameters * @param callable $callback * @return $this|mixed */ public function call($uri, $method, array $parameters = array(), callable $callback = null) { if (!$this->_sync) { $rpc = new \Yar_Client($uri); if (!empty($this->_opt) && is_array($this->_opt)) { foreach ($this->_opt as $key => $value) { $rpc->setOpt($key, $value); } } $result = call_user_func_array(array($rpc, $method), $parameters); if (!empty($callback) && is_callable($callback)) { $result = call_user_func($callback, $result); } return $result; } \Yar_Concurrent_Client::call($uri, $method, $parameters, $callback); return $this; }
<?php $client = new Yar_Client("tcp://192.168.1.124:9999"); $client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 100); $result = $client->default(array(1, 2, 'a' => 4)); var_dump($result);
<?php try { $client = new Yar_Client('http://test.ntrans.com/demo/'); var_dump($client->indexAction(274, array('oli.com.cn' => array('price' => 100, 'day' => 10, 'hour' => 21, 'description' => '简介'), 'oliq.com.cn' => array('price' => 100, 'day' => 10, 'hour' => 21, 'description' => '简介')), 1, 1)); } catch (\Exception $e) { echo $e->getMessage(); }