use*_*913 5 php memory command-line-interface
当PHP进程启动时,它会加载扩展,各种配置指令并创建全局/ env变量等,这些(我假设)会占用内存.
是我的目标做的是引导,使用最少内存量可能做一个特定任务的简单的PHP脚本.
一个示例CLI脚本,例如:
printf("\nHello World");
Run Code Online (Sandbox Code Playgroud)
上面的代码不依赖于任何$ _ENV变量或默认打开的某些PHP流,如果它们不存在,将使PHP进程使用更少的内存.
为了运行上面列出的代码,你们会做些什么来减少内存使用量?
为了获得一些字节,您可以在干净的环境中运行 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,并测试它是否满足您的需求。