/** * 发送请求 * @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; }
<?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";