× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

swoole_async_dns_lookup

Swoole扩展是按照PHP标准扩展构建的。使用phpize来生成编译检测脚本,./configure来做编译配置检测,make进行编译,make install进行安装。

  • 请下载releases版本的swoole,直接从github主干上拉取最新代码可能会编译不过
  • 如无特殊需求, 请务必编译安装swoole的最新版本
  • 如果当前用户不是root,可能没有PHP安装目录的写权限,安装时需要sudo或者su
  • 如果是在git分支上直接git pull更新代码,重新编译前务必要执行make clean

安装准备

安装前必须保证系统已经安装了下列软件

  • php-7.0 或更高版本
  • gcc-4.8 或更高版本
  • make
  • autoconf
  • pcre (CentOS系统可以执行命令:yum install pcre-devel)

下载地址

下载源代码包后,在终端进入源码目录,执行下面的命令进行编译和安装

新手编译示例

cd swoole
sudo phpize (ubuntu 没有安装phpize可执行命令:sudo apt-get install php-dev来安装phpize)
sudo ./configure
sudo make 
sudo make install

进阶完整编译示例

初次接触swoole的开发者请先尝试上方的简单编译,如果有进一步的需要,可以根据具体的需求和版本,调整以下示例的编译参数

编译参数参考

以下脚本会下载并编译master分支的源码, 需保证你已安装所有依赖, 否则会遇到各种依赖错误

mkdir -p ~/build && \
cd ~/build && \
rm -rf ./swoole-src && \
curl -o ./tmp/swoole.tar.gz https://github.com/swoole/swoole-src/archive/master.tar.gz -L && \
tar zxvf ./tmp/swoole.tar.gz && \
mv swoole-src* swoole-src && \
cd swoole-src && \
phpize && \
./configure \
--enable-coroutine \
--enable-openssl  \
--enable-http2  \
--enable-async-redis \
--enable-sockets \
--enable-mysqlnd && \
make clean && make && sudo make install

PECL

注意: PECL发布时间晚于Github发布时间

Swoole项目已收录到PHP官方扩展库,除了手工下载编译外,还可以通过PHP官方提供的pecl命令,一键下载安装

pecl install swoole

配置php.ini

编译安装成功后,修改php.ini加入

extension=swoole.so

通过php -mphpinfo()来查看是否成功加载了swoole.so,如果没有可能是php.ini的路径不对,可以使用php --ini来定位到php.ini的绝对路径。


  • 刘春发

    反馈个问题:无法解析时,报错,PHP Warning: Unknown: swoole_async: Aio Error: Success[0] in Unknown on line 0

  • ~~~$ip = swoole_async_dns_lookup_coro($domain, $timeout);~~~ 协程DNS

  • Iver

    使用swoole_async_dns_lookup查询一个本地地址 macOS 下ip为127.0.0.0 而非 127.0.0.1 而Linux下是127.0.0.1 请问是否正常?以及为何会有此差异?

  • 13630137879

    HP Fatal error: Uncaught Error: Call to undefined function swoole_async_dns_lookup() in /home/ubuntu/work/swooc_mooc/demo/0521DNS查询与异步文件io/1DNS查询.php:3 Stack trace:

    0 {main}

    thrown in /home/ubuntu/work/swooc_mooc/demo/0521DNS查询与异步文件io/1DNS查询.php on line 3

    Fatal error: Uncaught Error: Call to undefined function swoole_async_dns_lookup() in /home/ubuntu/work/swooc_mooc/demo/0521DNS查询与异步文件io/1DNS查询.php:3 Stack trace:

    0 {main}

    thrown in /home/ubuntu/work/swooc_mooc/demo/0521DNS查询与异步文件io/1DNS查询.php on line 3

    报错什么情况