乐趣区

关于php:动态查看及加载PHP扩展

在编译并实现 php.ini 的配置之后,咱们就胜利的装置了一个 PHP 的扩大。不过,PHP 也为咱们提供了两个在动静运行期间能够查看扩大状态以及加载未在 php.ini 中进行配置的扩大的函数。上面,咱们就来看看它们的应用。

查看是否曾经加载了扩大

echo extension_loaded("redis");

非常简单的一个函数,它的作用就是查看一个扩大是否曾经加载。它返回的是一个布尔值,当扩大曾经加载则返回 true,如果扩大没有加载,则返回 false。

在 PHP-FPM 的网页中,咱们能够通过 phpinfo() 函数来查看以后 PHP 的状态及扩大相干信息。而在 CLI 命令行脚本中,咱们能够应用 php -m 命令来查看已加载的扩大。

动静加载扩大

首先,咱们在 php.ini 中敞开 redis 扩大的加载,并且同时须要关上 enable_dl=1,这样,咱们就能够应用 dl() 函数来动静加载一个扩大了。

dl("redis");
echo extension_loaded("redis");
// 1

没错,dl() 函数正是用来动静加载扩大的一个函数。不过它的应用是有许多限度的,这也并不是一个平安的函数。所以在 PHP7 中,它在 php.ini 的配置 enable_dl 曾经是默认敞开的了。咱们在生产环境也尽量不要应用这种形式进行扩大的加载。

另外,这个函数在 PHP7 中仅对 CLI 环境无效。也就是说,在 PHP-FPM 的网页环境下,这个函数是没用的,即便曾经关上了 php.ini 中的 enable_dl。

扩大加载的目录是以 PHP 默认的扩大目录为根底进行加载的,在 windows 环境下留神扩大名为 .dll 文件。当扩大加载失败时,不仅这个函数会返回 false,同时还会产生一条 E_WARNING 的谬误音讯。最初,在 PHP 平安模式下,这个函数也同样是无奈应用的。

综上所述,在生产环境中,咱们还是尽量不要应用动静加载扩大的能力。这个能够当成咱们的一个学习材料,在本人本机电脑上不想一次加载太多扩大的状况下应用,当须要测试某些性能而须要某些非凡的扩大时,再思考应用这个性能进行本地的测试。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202005/source/%E5%8A%A8%E6%80%81%E6%9F%A5%E7%9C%8B%E5%8F%8A%E5%8A%A0%E8%BD%BDPHP%E6%89%A9%E5%B1%95.php

参考文档:

https://www.php.net/manual/zh/function.extension-loaded.php

https://www.php.net/manual/zh/function.dl.php

各自媒体平台均可搜寻【硬核项目经理】

退出移动版