Beispiel #1
0
 /**
  * 发送请求
  * @param $type
  * @param $send
  * @param SOA_result $retObj
  * @return bool
  */
 protected function request($type, $send, $retObj)
 {
     $socket = new \Swoole\Client\TCP();
     $retObj->socket = $socket;
     $retObj->type = $type;
     $retObj->send = $send;
     $svr = $this->getServer();
     //异步connect
     //TODO 如果连接失败,需要上报机器存活状态
     $ret = $socket->connect($svr['host'], $svr['port'], $this->timeout);
     //使用SOCKET的编号作为ID
     $retObj->id = (int) $socket->get_socket();
     if ($ret === false) {
         $retObj->code = SOA_Result::ERR_CONNECT;
         unset($retObj->socket);
         return false;
     }
     //请求串号
     $retObj->requestId = self::getRequestId();
     //发送失败了
     if ($retObj->socket->send(SOAServer::encode($retObj->send, SOAServer::DECODE_PHP, 0, $retObj->requestId)) === false) {
         $retObj->code = SOA_Result::ERR_SEND;
         unset($retObj->socket);
         return false;
     }
     //加入wait_list
     if ($type != self::TYPE_ASYNC) {
         $this->wait_list[$retObj->id] = $retObj;
     }
     return true;
 }
 /**
  * 发送请求
  * @param $type
  * @param $send
  * @param $retObj
  */
 protected function request($type, $send, $retObj)
 {
     $socket = new \Swoole\Client\TCP();
     $retObj->socket = $socket;
     $retObj->type = $type;
     $retObj->send = $send;
     $svr = $this->getServer();
     //异步connect
     $ret = $socket->connect($svr['host'], $svr['port'], $this->timeout);
     //使用SOCKET的编号作为ID
     $retObj->id = (int) $socket->get_socket();
     if ($ret === false) {
         $retObj->code = SOAClient_Result::ERR_CONNECT;
         unset($retObj->socket);
         return false;
     }
     //发送失败了
     if ($retObj->socket->send(self::packData($retObj->send)) === false) {
         $retObj->code = SOAClient_Result::ERR_SEND;
         unset($retObj->socket);
         return false;
     }
     //加入wait_list
     if ($type != self::TYPE_ASYNC) {
         $this->wait_list[$retObj->id] = $retObj;
     }
     return true;
 }
Beispiel #3
0
<?php

define('DEBUG', 'on');
define('WEBPATH', realpath(__DIR__ . '/..'));
//包含框架入口文件
require WEBPATH . '/libs/lib_config.php';
$s = microtime(true);
$c = new Swoole\Client\TCP();
$c->connect('127.0.0.1', 9501, 0.5);
$c->send('hello');
var_dump($c->recv());
echo "use " . (microtime(true) - $s) . "\n";