thinkphp5.1 workman启动webserver,与hprose整合后没有内容输出
框架使用tp5.1,workman使用tp官方提供的composer包。想问下如果把hprose也整合进来?
做过的尝试如下:
控制器(充当客户端)
<?php
namespace app\controller;
use com\qidugo\controller\BaseController;
class IndexController extends BaseController
{
public function index()
{
$this->rpclient('http://192.168.10.10/demo', 'test1')->then(function ($res) {
var_dump($res);
});
}
public function hello($name = 'ThinkPHP5')
{
return 'hello,' . $name;
}
}
客户端的基类控制器如下:
<?php
namespace com\qidugo\controller;
use Hprose\Http\Client as HproseHttpClient;
class BaseController
{
public $rpc_client;
/**
* rpc客户端
* @param string $uri 远程调用的uri
* @param string $remote_method 调用远程的方法名
* @param array $args 调用时传递的参数
* @return mixed
*/
public function rpclient($uri, $remote_method, $args = [])
{
$this->rpc_client = new HproseHttpClient($uri . '/start'); // 先调用一次服务启动
return $this->rpc_client->$remote_method();
}
}
提供者(服务端)
<?php
namespace app\controller;
use com\qidugo\controller\HproseController;
class DemoController extends HproseController
{
public function test1()
{
return 'test1';
}
}
提供者基于的控制器如下:
<?php
namespace com\qidugo\controller;
use Hprose\Http\Server as HproseHttpServer;
/**
* Hprose控制器类
*/
class HproseController
{
/**
* @var HproseHttpServer
*/
public $server;
protected $allowMethodList = '';
protected $crossDomain = false;
protected $P3P = false;
protected $get = true;
protected $debug = false;
public function __call($method, $args)
{
}
/**
* hprose 初始化方法
* @throws \Exception
*/
public function __construct()
{
//实例化HproseHttpServer
$this->server = new HproseHttpServer();
// $this->server->addInstanceMethods($this);
if ($this->allowMethodList) {
$methods = $this->allowMethodList;
} else {
$methods = get_class_methods($this);
$methods = array_diff($methods, array('__construct', '__call', '_initialize', 'initialize'));
}
$this->server->addMethods($methods, $this);
if (config('app_debug') || $this->debug) {
$this->server->setDebugEnabled(true);
}
// Hprose设置
$this->server->setCrossDomainEnabled($this->crossDomain);
$this->server->setP3PEnabled($this->P3P);
$this->server->setGetEnabled($this->get);
// $this->server->start();
}
public function start()
{
// 启动server
$this->server->start();
}
}
使用vagrant做的开发环境,php think worker后进程能正常跑起来:
访问index没有得到任何返回值,请问是什么问题?哪个环节出问题呢?谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论