和pycurl支持异步DNS支持c-ares类似,请先确定Libcurl是否已支持异步DNS解析c-ares,如不支持可升级libcurl支持异步DNS解析c-ares。
理论上的libcurl更新添加支持异步DNS解析后,将库文件通过ldconfig添加到系统动态库,如果大版本号和之前版本相同,可以不用重新编译Php curl扩展已支持异步DNS,因为PHP curl依赖libcurl会自动选择版本较高的lib。
如查看系统共享库中的Libcurl:
ldconfig -p|grep curl
libcurl.so.4 (libc6,x86-64) => /usr/local/curl/lib/libcurl.so.4
libcurl.so.4 (libc6,x86-64) => /usr/lib64/libcurl.so.4
libcurl.so (libc6,x86-64) => /usr/local/curl/lib/libcurl.so
libcurl.so (libc6,x86-64) => /usr/lib64/libcurl.so
然后查看php curl扩展的共享库依赖,可见已自动选择新编译的libcurl.so.4:
ldd /usr/lib64/php/modules/curl.so|grep curl
libcurl.so.4 => /usr/local/curl/lib/libcurl.so.4 (0x00007f406f0f9000)
不过为了稳定可以重新编译下php curl扩展,本文PHP为yum安装,如果是源码安装的可参考:PHP动态编译添加IMAP模块支持。
查看已安装的PHP版本,并下
php -v
PHP 5.5.21 (cli) (built: Jan 21 2015 15:35:14)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
下载相应版本的源码并重新编译curl扩展:
yum install php-devel
wget https://github.com/php/php-src/archive/php-5.5.21.tar.gz
tar zxvf php-5.5.21.tar.gz
cd php-src-php-5.5.21/ext/curl/
phpize
./configure --with-curl=/usr/local/curl
查看当前PHP CURL是否已支持异步DNS支持:
php -i|grep AsynchDNS
AsynchDNS => Yes