编译安装php,php会生成很多扩展,这些扩展分为动态和静态编译两种。
动态编译会自动生成so文件,并保存在:$php/lib/php/extensions/no-debug-non-zts-20060613/,这些so文件包含了php所能调用的函数库,当代码中需要调用这些函数库时php会动态的加载这些so文件。
静态编译指在编译安装php时并不会自动生成这些so文件,而是将这些so文件中的函数库静态的编译进php中,这样代码在调用时也会调用到。
动态编译与静态编译的区别:
动态编译时每一个php扩展都会生成自己的so文件,代码调用这些函数库时会动态的加载相应的so文件,这样可以优化代码执行时间和控制php内存的大小;而静态编译虽然也能使代码调用到相应的函数库,但在高并发的情况下,全部加载php的函数库,会带来更多的内存消耗,影响服务器性能。
动态编译与静态编译的实现:
动态编译需要在配置时指定参数shared,例如:
-with-zlib=shared -with-pdo-mysql=shared,/usr/local/mysql
静态编译则不需要指定参数shared,例:-with-zlib