yuanzhihai / easyhttp

轻量级、语义化、对IDE友好的HTTP客户端
MIT License
37 stars 3 forks source link

Webman使用easyhttp时,异步访问有问题 #1

Closed leamus closed 1 year ago

leamus commented 1 year ago

代码类似这样:

public function test(Request $request)
{
    Http::getAsync('http://wisersportclub.com:8000', [], function (Response $response) {
        echo '异步请求成功,响应内容:' . $response->body() . PHP_EOL;
    }, function (RequestException $e) {
        echo '异步请求异常,错误码:' . $e->getCode() . ',错误信息:' . $e->getMessage() . PHP_EOL;
    });
    echo json_encode(['code' => 200, 'msg' => '请求成功'], JSON_UNESCAPED_UNICODE) . PHP_EOL;

    return json(['code' => 0, 'msg' => 'ok', 'data' =>$request->post('data')]);
}

public function test1(Request $request)
{
    $response = Http::get('http://wisersportclub.com:8000');
    echo '同步请求成功,响应内容:' . $response->body() . PHP_EOL;

    return json(['code' => 0, 'msg' => 'ok', 'data' =>$request->post('data')]);
}

出现问题: 访问test时,异步输出一直没有,此时如果访问一下test1,异步立刻输出,且同步也输出:

worker listen processes status webman http://0.0.0.0:8100 2 [ok] monitor none 1 [ok] {"code":200,"msg":"请求成功"} (此时一直不动,直到访问test1) 异步请求成功,响应内容:hello webman 同步请求成功,响应内容:hello webman (再次访问test,仍然是这样) {"code":200,"msg":"请求成功"}

请问是什么情况呢?

yuanzhihai commented 1 year ago

我这没问题啊

leamus commented 1 year ago

我这是webman最新的,c测试代码也没问题啊。。

leamus commented 1 year ago

测试环境windows

yuanzhihai commented 1 year ago

public function test(Request $request) { Http::getAsync('http://wisersportclub.com:8000', [], function (Response $response) { echo '异步请求成功,响应内容:' . $response->body() . PHP_EOL; }, function (RequestException $e) { echo '异步请求异常,错误码:' . $e->getCode() . ',错误信息:' . $e->getMessage() . PHP_EOL; })->wait(); echo json_encode(['code' => 200, 'msg' => '请求成功'], JSON_UNESCAPED_UNICODE) . PHP_EOL;

return json(['code' => 0, 'msg' => 'ok', 'data' =>$request->post('data')]);

}

增加 wait(); 等待获取

leamus commented 1 year ago

加wait虽然没问题,但这也相当于同步了吧。。

leamus commented 1 year ago

是不是因为不加wait,返回后导致上下文环境释放什么的未知原因呢?

yuanzhihai commented 1 year ago

是不是因为不加wait,返回后导致上下文环境释放什么的未知原因呢?

在切换其他方法路由的时候 异步就返回来了 这个我还没找到原因 在 fpm环境下是没问题的

yuanzhihai commented 1 year ago

群主有 http异步插件

leamus commented 1 year ago

好的,谢谢~

leamus commented 1 year ago

群主的http异步是哪个?

yuanzhihai commented 1 year ago

群主的http异步是哪个?

https://github.com/walkor/http-client

leamus commented 1 year ago

谢谢~