|
从swoole的v4.6.0开始支持可以使用
原生 curl 协程客户端 (SWOOLE_HOOK_NATIVE_CURL)
在这个版本中最大的变化莫过于支持了原生?curl?协程客户端,有什么用呢?
用过?SWOOLE_HOOK_CURL?的小伙伴应该知道,有一些不支持的选项,同时还会因为部分 SDK 的不兼容导致一些错误,例如:
PHP Notice: Object of class Swoole\Curl\Handler could not be converted to int
PHP Warning: curl_multi_add_handle() expects parameter 2 to be resource, object given
Bash
原因是 hook 后的?curl?不再是一个?resource?类型,而是?object?类型。
出现这种问题也建议联系 SDK 方修改代码,因为在?PHP8?中?curl?不再是?resource?类型,而是?object?类型
以及经常使用的阿里云 OSS SDK 也是不支持SWOOLE_HOOK_CURL的,会遇到一些奇奇怪怪的
那么从?v4.6.0?版本开始就可以使用?SWOOLE_HOOK_NATIVE_CURL?代替?SWOOLE_HOOK_CURL,来解决以上提到的问题
使用SWOOLE_HOOK_NATIVE_CURL需要在编译 Swoole 扩展时增加?—enable-swoole-curl?编译参数,开启该选项后将自动设置?SWOOLE_HOOK_NATIVE_CURL,关闭?SWOOLE_HOOK_CURL,同时?SWOOLE_HOOK_ALL?也会包含?SWOOLE_HOOK_NATIVE_CURL
pecl 的 v4.6.0 版本暂时没有增加这个选项,请使用手动编译开启,下个版本中会增加。
编译成功后使用--ri查看信息,就可以看到curl-native
$ php --ri swoole | grep curl
curl-native => enabled
swoole安装支持openssl
php --ri swoole? 查看当前扩展
安装过程:
运行命令?pecl upgrade swoole?看到openssl的时候选择yes --with-openssl-dir=/usr/bin/openssl 当运行完毕后如提示找不到openssl.h头文件,使用which openssl查看openssl的地址和上面写的也是相同的,重复试了很多次都没有效果 原因:有的电脑的openssl安装位置是在/usr/local/opt下,然后我在这个目录下发现了两个有关openssl的目录,经测试一个确实是可以的

?
|