当前位置: 首页 > 工具软件 > c-ares > 使用案例 >

CentOS编译安装libcurl/curl添加异步DNS解析c-ares

萧晔
2023-12-01

在使用curl异步并发请求时如果有大量域名解析会长时间阻塞程序IO,可以编译升级libcurl以支持异步DNS解析。
Centos7自带libcurl已支持异步DNS支持,不过是--enable-threaded-resolver,可以使用curl-config --configure查看curl编译参数。
查看Libcurl是否已支持异步DNS解析,包含AsynchDNS为支持:

1

2

3

4

curl --version

curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.40.0 OpenSSL/1.0.1e zlib/1.2.3

Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp

Features: AsynchDNS IPv6 Largefile NTLM SSL libz

首先安装异步DNS解析库c-ares:

1

yum install c-ares-devel openssl-devel

编译libcurl库:

1

2

3

4

5

wget http://curl.haxx.se/download/curl-7.40.0.tar.gz

tar zxvf curl-7.40.0.tar.gz

cd curl-7.40.0/

./configure --enable-ares --prefix=/usr/local/curl --with-ssl

make && make install

查看编译安装的curl信息,已经支持了异步DNS解析库c-ares:

1

2

3

4

/usr/local/curl/bin/curl --version

curl 7.40.0 (x86_64-unknown-linux-gnu) libcurl/7.40.0 OpenSSL/1.0.1e zlib/1.2.7 c-ares/1.10.0

Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp

Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

将libcurl动态库添加到动态链接库:

1

2

echo '/usr/local/curl/lib' > /etc/ld.so.conf.d/libcurl.conf

ldconfig

安装完毕,重启PHP-FPM,查看phpinfo可以看到新的CURL

使用libcurl库看是否支持c-ares:

1

2

3

4

5

6

7

8

9

10

11

#include <curl/curl.h>

int main()

{

 curl_version_info_data*info=curl_version_info(CURLVERSION_NOW);

 if (info->features&CURL_VERSION_ASYNCHDNS) {

   printf( "ares enabled\n");

 } else {

   printf( "ares NOT enabled\n");

 }

 return 0;

}

转载于:https://my.oschina.net/singyen/blog/1204252

 类似资料: