Example #1
0
 public function yar_clientAction()
 {
     $client = new Yar_Client("http://yaf.zhaoquan.com/rpc/yar");
     $result = $client->getOne();
     DebugTools::print_r($result);
     return false;
 }
Example #2
0
 /**
  * 初始化,参数检查,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);
 }
Example #3
0
 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);
 }
Example #5
0
<?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);
Example #6
0
<?php

$client = new Yar_Client('http://127.0.0.1:10000');
$result = $client->echoName('han mei mei');
var_dump($result);
Example #7
0
<?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);
Example #8
0
<?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
Example #9
0
 public function cls($do)
 {
     $client = new \Yar_Client(self::REQUEST_URL . $do);
     $client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000);
     return $client;
 }
Example #10
0
 /**
  * 执行远程调用任务
  * @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;
 }
Example #11
0
File: test.php Project: ifzz/yar-c
<?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);
Example #12
0
<?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();
}