【已解决】webman请问下异步http怎么设置回调函数?

zhizun

workerman:5.0.0-beta.7

public function index()
    {
        $this->get('http://192.168.1.201/');
    }

    public function get(string $url)
    {
        $http = new Client();
        $http->request($url, [
            'method' => 'get',
            'version' => '1.1',
            'success' => 'handleAsyncResult'
        ]);
    }

    public function handleAsyncResult() {

    }

报错:TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, function "handleAsyncResult" not found or invalid function name in E:\Admin\test\vendor\workerman\http-client\src\Client.php:180

然后就是'handleAsyncResult'里怎么传递请求结果?有点懵逼。。

363 2 3
2个回答

Gin
  • zhizun 2023-12-06

    大哥,先看提问内容,谢谢!

  • Gin 2023-12-06

    直接内部调用不行吗?

  • zhizun 2023-12-06

    害,想试试回调函数。。。看看是不是有差异。文档里写的:“当不设置回调函数时,客户端会用同步的方式返回异步请求结果,请求过程不阻塞当前进程,也就是可以并发处理请求。”

  • Gin 2023-12-06

    回调只能内部设置回调, 不能指定外部回调函数

  • zhizun 2023-12-06

    原来如此,谢谢大哥!

six

php里类的回调方法这样写,[$this, '方法名']
所以应该是这样

$http->request($url, [
            'method' => 'get',
            'version' => '1.1',
            'success' => [$this, 'handleAsyncResult']
        ]);

你的写法是普通函数的写法

🔝