I am not very sure whether it is better suited here or on ServerFault, so please feel free to move it, if needed. I just posted it here because I think it is highly relevant to PHP programmers and more people might be able to help me.
我在 Ubuntu 下的 apache 服务器上运行 PHP 应用程序。几天前,我查看了 phpinfo()
,发现我只使用了已安装和启用的大多数扩展中的一小部分。未使用的扩展列表很多(我需要其中一些的可能性很小,但如果需要的话,这很容易确定和启用)。所以除此之外还有(这些东西在做什么的解释是近似的。很容易找到精确的描述):
- bcmath(任意计算精度)
- bz2、zip、zlib、phar(存档器)
- dba,PDO(处理数据库)
- libXML、simpleXML、XML、XMLReader、XMLWriter、DOM(很多用于处理 XML 的东西)
- ereg(正则表达式。很久以前就弃用了)
- FTP
- gettext(国际化 php 应用程序)
- readline(关于命令行的东西)
- 反射(reflection)(逆向工程类、接口(interface)的能力)
- SOAP(编写 SOAP 服务/客户端)
- sysvshm、wddx(不知道)
如您所见,列表非常庞大。我使用 Mongo 作为存储,我与服务器的所有通信都是通过 ajax (JSON),所以我非常怀疑我现在或在不久的将来是否需要 XML/Dba/SOAP/ftp。
因此,在尝试逐一禁用它们并检查我的应用程序是否仍然有效之前,我想问:禁用它们是否有意义?我知道 disabling unneeded modules from apache can give a reasonable boost in productivity服务器,但我还没有发现任何关于 PHP 的此类正常测试/计算。
所以我的问题可以用这种方式更好地表述:是否有人做过一些测试来找出通过禁用/删除不需要的模块(速度、内存消耗等)我可以获得哪些改进。请不要发布类似“确保它有意义 - 删除它们”或“不要删除 - 你会破坏某些东西”甚至引用“过早的优化是......”之类的内容。
最佳答案
不是真的。
禁用模块只会减少每个 Apache+PHP 实例的占用空间。这确实可以给你带来提升,但仅限于高负载/交通繁忙的情况。就进程启动/上下文切换不是主要瓶颈而言,启用所有模块是安全的。
然后再...
一个非常明显的异常(exception)是 xdebug。它不是真正的模块,但如果你让它打开,每个请求将花费你大约 200-400 毫秒。大数字,特别是自从谷歌开始奖励快速(更)的网站。调试器和配置文件必须关闭才能进行生产。
关于php - 删除我不使用的 PHP 扩展是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029420/