编译参数

⚠️新手警告: 不在此列表中的编译参数, 任何情况都请不要使用

这里是./configure编译配置的额外参数,用于开启某些特性

1.8.7或更高版本不再需要设置--enable-async-mysql--enable-async-httpclientasync_mysqlasync_httpclient改为内置 4.0.1或更高版本后不再需要设置--enable-coroutine


☺ 通用参数

--enable-openssl

启用SSL支持

使用操作系统提供的libssl.so动态连接库

--with-openssl-dir

启用SSL支持 并 指定openssl库的路径, 需跟上路径参数: --with-openssl-dir=/opt/openssl/

--enable-http2

开启对HTTP2的支持

依赖nghttp2库, 在v4.3.0后不再需要安装依赖, 改为内置, 但仍需要增加该编译参数来开启http2支持

--enable-mysqlnd

启用mysqlnd支持,启用Coroutine\MySQL::escapse方法。启用此参数后,PHP必须有mysqlnd模块,否则会导致swoole无法运行。

依赖mysqlnd模块

--enable-coroutine-postgresql

启用协程Postgresql客户端

依赖libpq

--with-libpq-dir

指定libpq库的路径. --with-libpq-dir=/etc/postgresql

--enable-sockets

ServerClientgetSocket()方法也需要依赖此编译参数。 增加对php的sockets资源的支持。开启此参数,swoole_event_add就可以添加sockets扩展创建的连接到swoole的事件循环中。

依赖sockets扩展, v4.3.2后该参数的作用被削弱了, 因为Swoole内置的Coroutine\Socket可以完成大部分事情



☻ 已废弃的编译参数

--enable-coroutine

4.0.1版本后移除了此编译选项, 默认强制打开, 可使用$server->set动态开关

enable_coroutine动态配置请见文档

启用协程

--enable-async-redis

增加异步Redis客户端支持

依赖hiredis

4.2.x版本可能会显示redis-client而没有async字样, 实际上是一样的

4.2.6版本及以后不再需要手动安装和启用, 而是swoole自带

--with-hiredis-dir

增加异步Redis客户端支持 并 指定hiredis库的路径, 需跟上路径参数: --with-hiredis-dir=/opt/hiredis/

需要 4.2.0 及以上版本, 4.2.6版本及以后不再需要手动安装和启用hiredis, 而是swoole自带

--with-nghttp2-dir

增加对HTTP2的支持 并 指定nghttp2库的路径, 需跟上路径参数: --with-nghttp2-dir=/opt/nghttp2/

需要 4.2.0 及以上版本, 在 4.3.0移除(内置了nghttp2支持)



 Debug参数

--enable-debug-log(>=4.2.0)

打开内核DEBUG日志。生产环境不可以启用

--enable-trace-log

打开追踪日志,开启此选项后swoole将打印各类细节的调试日志, 仅内核开发时使用



☠️以下选项需要在你知道它是如何工作的时候方可添加

--enable-asan

详情: https://wiki.swoole.com/wiki/page/939.html

使用 asan 内存检测



以下选项是编译PHP而不是Swoole时使用的

--enable-swoole

使用swoole扩展



  • lin

    调试日志应该怎么关闭

  • 子山

    docker安装swoole2.2.0 sudo docker run --privileged --restart=always -ti -v /var/www:/var/www -d -p 2221:22 -p 80:80 -p 443:443 -p 9501:9501 -p 9502:9502 -p 9503:9503 -p 9504:9504 -p 9505:9505 -p 9506:9506 --name php_swoole registry.cn-hangzhou.aliyuncs.com/louislivi/swoole /usr/sbin/init

  • 子山

    docker安装swoole2.2.0

    sudo docker run --privileged --restart=always -ti -v /var/www:/var/www -d -p 2221:22 -p 80:80 -p 443:443 -p 9501:9501 -p 9502:9502 -p 9503:9503 -p 9504:9504 -p 9505:9505 -p 9506:9506 --name php_swoole registry.cn-hangzhou.aliyuncs.com/louislivi/swoole /usr/sbin/init

  • codeRemover

    php7.2.3 + swoole4.0.1 编译生成so文件成功,但php启动的时候一直报: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/swoole.so' (tried: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/swoole.so (libhiredis.so.0.13: cannot open shared object file: No such file or directory)

  • codeRemover

    最终用下面的方式解决了。 确保你的/etc/ld.so.conf里面有 /usr/local/lib 这一行 没有的话vim编辑在尾行加上 然后 sudo ldconfig

  • rtsg

    日志 如何开启 我在其他的机器上可以开启日志 我自己的机器上却不行 注意到的地方有 守护进程模式 文件权限 还有那些地方需要注意

  • ༄牧ོྂཾ࿆༊࿆之࿆ྂ࿐