PHP-CLI - 如何减少启动PHP进程所需的内存使用量

use*_*913 5 php memory command-line-interface

当PHP进程启动时,它会加载扩展,各种配置指令并创建全局/ env变量等,这些(我假设)会占用内存.

是我的目标做的是引导,使用最少内存量可能做一个特定任务的简单的PHP脚本.

一个示例CLI脚本,例如:

printf("\nHello World");
Run Code Online (Sandbox Code Playgroud)

上面的代码不依赖于任何$ _ENV变量或默认打开的某些PHP流,如果它们不存在,将使PHP进程使用更少的内存.

为了运行上面列出的代码,你们会做些什么来减少内存使用量?

Tre*_*her 3

为了获得一些字节,您可以在干净的环境中运行 PHP 代码:

env -i php -r 'var_dump(memory_get_peak_usage()); var_dump($GLOBALS);'
Run Code Online (Sandbox Code Playgroud)

env -i在干净的环境中启动脚本。您可以通过转储来看到差异$GLOBALS。该函数memory_get_peak_usage()显示脚本消耗的最大内存。但在我的系统上,使用此方法仅增加了几KB。这取决于你的环境变量。

为了真正优化内存占用,您必须研究使用的扩展。要获取扩展路径,只需执行如下脚本:

php -r 'var_dump(ini_get("extension_dir"));'
Run Code Online (Sandbox Code Playgroud)

您可能会发现一些像这样的扩展:

curl.so
gd.so
json.so
[...]
Run Code Online (Sandbox Code Playgroud)

这些是您可以使用 dl() 动态加载的扩展。它们不会影响您的内存使用情况。但是如果您想查看系统加载的每个扩展,您可以使用以下命令:

php -m
Run Code Online (Sandbox Code Playgroud)

比较这些列表,您会发现,还有更多可用的扩展。这些被编译成 PHP。为了减少内存占用,您必须从源代码编译 PHP。

要优化 PHP,您必须研究您的代码,了解您需要哪些扩展。为 ./configure 获取正确的选项是一项耗时的任务。首先,请参阅http://www.php.net/manual/de/configure.about.php

通常,如果您需要特定的扩展,您可以转到 PHP 手册并查看扩展的安装部分,对于 zlib,例如http://php.net/manual/de/zlib .安装.php

对于您的具体示例,您应该尝试从不带选项的源代码编译 PHP,并测试它是否满足您的需求。